亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Python的for循環中從具有相同日期的兩個數據幀的列中減去值時出現問題

在Python的for循環中從具有相同日期的兩個數據幀的列中減去值時出現問題

倚天杖 2023-07-11 14:43:23
我有兩個數據框,如下所示:df1:DATE        Value1  Value204.01.05    2.754   2.75705.01.05    2.7316  2.750506.01.05    2.7546  2.756807.01.05    2.7465  2.752510.01.05    2.7385  2.741511.01.05    2.7348  2.738812.01.05    2.7348  2.738813.01.05    2.7348  2.738814.01.05    2.7365  2.743517.01.05    2.7365  2.743518.01.05    2.7365  2.743519.01.05    2.7365  2.7435df2:DATE        Value1  Value204.01.05    2.701   2.699505.01.05    2.7065  2.70507.01.05    2.6348  2.633310.01.05    2.635   2.631511.01.05    2.6275  2.626512.01.05    2.6268  2.625313.01.05    2.6285  2.62717.01.05    2.6565  2.655518.01.05    2.6275  2.62619.01.05    2.643   2.6415如果我有完全相同的日期,我下面的代碼就可以工作。一旦日期不相等并且我只想計算相等的日期,它就不起作用。我的 if 語句不知何故沒有過濾掉正確的日期。我想將計算值添加到 df1 中。我的代碼如下所示:import pandas as pdfile1 = 'File1.csv'file2 = 'File2.csv'df1 = pd.read_csv(file1, sep=';')df1['DATE'] = pd.to_datetime(df1.DATE)df2 = pd.read_csv(file2, sep=';')df2['DATE'] = pd.to_datetime(df2.DATE)for date1 in df1['DATE']:    for date2 in df2['DATE']:        if date1 == date2:            print(date1, date2)            df1['sub'] = df1.Value1 - df2.Value1print(df1)預期輸出如下:DATE        Value1  Value2  LEVEL   sub04.01.05    2.701   2.6995  1 Year  0.05305.01.05    2.7065  2.705   1 Year  0.025107.01.05    2.6348  2.6333  1 Year  0.111710.01.05    2.635   2.6315  1 Year  0.103511.01.05    2.6275  2.6265  1 Year  0.107312.01.05    2.6268  2.6253  1 Year  0.10813.01.05    2.6285  2.627   1 Year  0.106317.01.05    2.6565  2.6555  1 Year  0.0818.01.05    2.6275  2.626   1 Year  0.10919.01.05    2.643   2.6415  1 Year  0.0935這意味著僅計算相同日期的差異。
查看完整描述

2 回答

?
紅顏莎娜

TA貢獻1842條經驗 獲得超13個贊

# this will result in merged df wtih all intersecting dates

df1 = df1.merge(df2, on = 'DATE', suffixes=('','_df2')

# the column you need

df1['sub'] = df1['Value1'] - df1['Value1_df2'] 

# next drop unnecessary columns of df2

df1.drop(columns = ['Value1_df2', 'Value2_df2'], inplace=True)


查看完整回答
反對 回復 2023-07-11
?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

首先將索引設置為'DATE'使其對齊。然后我們減去。由于您似乎希望將輸出添加到df2我們將執行-(df2 - df1)的操作與(df1 - df2)


df1 = df1.set_index('DATE')

df2 = df2.set_index('DATE')


df2['sub'] = -df2['Value1'].sub(df1['Value1'])


          Value1  Value2     sub

DATE                            

04.01.05  2.7010  2.6995  0.0530

05.01.05  2.7065  2.7050  0.0251

07.01.05  2.6348  2.6333  0.1117

10.01.05  2.6350  2.6315  0.1035

11.01.05  2.6275  2.6265  0.1073

12.01.05  2.6268  2.6253  0.1080

13.01.05  2.6285  2.6270  0.1063

17.01.05  2.6565  2.6555  0.0800

18.01.05  2.6275  2.6260  0.1090

19.01.05  2.6430  2.6415  0.0935


查看完整回答
反對 回復 2023-07-11
  • 2 回答
  • 0 關注
  • 140 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號