2017-10-16 13 views
0

フォルダにn個のcsvファイルがあり、それをpandasデータフレームに変換しました。2列を掛け、Pythonのn個のデータフレームに新しい列を作成します

私が持っているすべてのn個のデータフレームについて、2つの列の値を掛けて、別の列の値を加算したいとします(['X value'] * ['Slope'] + ['Intercept']) ))、出力Y値を持つ新しい列を作成します。

私はこの方法を試してみました:

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はリストであり、数字で索引を付ける必要があるため、エラーが発生します。各dfsにy値を割り当てるには、次の操作を行います

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

すべてのCSVを1つのデータフレームに連結してから、操作を実行することをお勧めします。あなたの現在のアプローチに対して、これを行うためのきれいな方法。

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

関連する問題