2017-10-16 80 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

相關問題