私はcsvファイルを読み込んでデータフレームとして保存し、時間ごとにそれを再サンプリングする関数を書いています。以下は私のコードです。csvファイルの内容をデータフレームに保存する[Python Pandas]
def ABC(path1,path2):
df1=pd.read_csv(path1, sep='\t',names = ["Datetime", "Value"])
df2=pd.read_csv(path2, sep='\t',names = ["Datetime", "Value"])
df1['Datetime']=pd.to_datetime(df1['Datetime'])
df1=df1.set_index('Datetime')
df1=df1.resample('H',how='sum')
df2['Datetime']=pd.to_datetime(df2['Datetime'])
df2=df2.set_index('Datetime')
df2=df2.resample('H',how='sum')
ABC = pd.DataFrame(df1['Value'] + df2['Value'])
ABCD = ABC * 0.519
return ABC, ABCD
ABC, ABCD= ABC('C:\Users\Desktop\B1.tsv'
,'C:\Users\Desktop\B2.tsv')
このプログラムはうまくいきますが、30個のファイルパスがある場合、30個のデータフレームを作成してこのプロセスを実行するのは難しいでしょう。 私は上記のやり方に従うことを考えていました。
def ABC():
Path= ['B1','B2','B3']
general = []
for i in Path:
url = ('C:\Users\Desktop\%s.tsv'%i)
X = pd.read_csv(url,sep='\t',names = ["Datetime", "Value"])
X['Datetime']=pd.to_datetime(X['Datetime'])
X=X.set_index('Datetime')
X=X.resample('H',how='sum')
general.append(X)
return general
df=ABC()
print df
上記のコードは、1つのdataFrameを出力し、最初のスクリプトが何をしているのか出力しないだけです。私が間違って何をしているのか?
だから 'df1、df2、df3 = ABC()'は3つのデータフレームを返しませんか? – IanS
いいえ、「解凍するには1つ以上の値が必要です」と表示されます。また、 'df = ABC()'の代わりに 'ABC()'を書くだけで、1つのデータフレームが得られます。 – Muhammad