减去和划分具有不同长度的数据帧,但仅显示具有更改值的数据帧

时间:2019-01-25 13:37:47

标签: python python-3.x pandas dataframe

我有两个具有不同行长,相似列但没有相应安排的数据框。我想从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

简单地表达Df3
Index       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

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()