我有两个具有不同行长,相似列但没有相应安排的数据框。我想从df1中减去df2,然后将结果除以df1(最终得到一个百分比)。
Df1
cx_Freeze
Df2
Index Bircher Club Quiche
2019-1-18 16 1 4
2019-1-19 4 9 6
2019-1-28 8 1 6
2019-1-29 4 7 6
2019-1-20 8 1 6
结果:两个数据框中仅显示日期2019-1-18和2019-1-20。然后用该数学公式(Df1-DF2)/ Df1
简单地表达Df3Index Bircher Quiche Club
2019-1-10 15 1 3
2019-1-18 4 1 1
2019-1-20 4 2 6
2019-1-26 2 1 5
2019-1-25 4 1 2
答案 0 :(得分:0)
只是从我的头顶上
# Join the tables to find common rows
merged_df = df1.join(df2, lsuffix='Left', rsuffix='Right', how='inner')
# Calculate the required percentages, column by column
for col in df1.columns:
merged_df[col] = (merged_df[col + 'Left'] - merged_df[col + 'Right']) / merged_df[col + 'Left']
# Optionally delete all other columns except df1.columns
merged_df = merged_df.loc[:, df1.columns.values]
这假定您要计算所有列的百分比。
答案 1 :(得分:0)
您还可以使用groupby和nth
x = pd.concat([df1,df2]).groupby(level=0)
fg = ((x.nth(0) - x.nth(-1) )/x.nth(0))*100
fg[fg!= 0].dropna()