2017-10-16 81 views
0

我在一个文件夹中有n个csv文件并将它们转换为pandas数据框。我想将所有n个数据帧乘以两列的值,并从另一列添加值(例如。(['X value'] * ['Slope'])+ ['Intercept']。 ))并创建一个具有输出Y值的新列。乘以2列并在Python中创建n个数据框中的新列

我曾尝试这种方式:

dfs['Y value'] = [(dfs[n]['X value'] * dfs[n]['Slope']) + dfs[n]['Intercept'] for n in range(len(files))] 

然而,它示出了[Y值]不是索引为错误。

感谢您的帮助。我是Python新手,也是新手,希望我能很好地解释我的问题。

回答

0

看起来像是指为每个数据帧分配一个y值。列表理解返回值列表,不分配给每个dfs[n]。发生错误是因为dfs是一个列表,需要使用数字进行索引。于Y值分配给每个dfs做到这一点:

for n in range(len(files)): 
    dfs[n]['Y value'] = (dfs[n]['X value'] * dfs[n]['Slope']) + dfs[n]['Intercept'] 
0

将所有CSV连接成单个数据帧可能最好,然后执行该操作。干净的方式来做到这一点,与你目前的做法。

import glob.glob 
import pandas as pd 

file_lst=glob.glob(*.csv) 
all_data=pd.DataFrame() #intialize empty dataframe 

for file in file_lst: 
    dat=pd.read_csv(file) 
    all_data.append(dat) 

这只有在所有CSV格式相同的情况下才有效。

然后,使用新的连接的数据帧,您可以执行所需的操作。

dat['Y']=dat['m']* dat['x'] +dat['b'] 
+0

谢谢,这肯定会是一个干净的方式来做到这一点,但我有一个理由不将它们串联所有还没有在一起。 – Flora

相关问题