乘以2列并在Python中创建n个数据框中的新列
问题描述:
我在一个文件夹中有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新手,也是新手,希望我能很好地解释我的问题。
答
看起来像是指为每个数据帧分配一个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']
答
将所有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']
谢谢,这肯定会是一个干净的方式来做到这一点,但我有一个理由不将它们串联所有还没有在一起。 – Flora