如何找到两个数据帧之间的相对差异(百分比)



给定两个数据帧df1df2,我可以通过获得它们之间的绝对差

df3 = df1.compare(df2)

我怎样才能得到它们之间的相对差异?

我最初认为pct_change可以完成这项工作,但这个函数似乎无关,因为它不接受数据帧作为输入。

假设两者的形状和数据类型相同,请尝试以下操作:

import pandas as pd
import numpy as np
data_1 = {"a": [2, 4, 0, 6, 44], "b": [5, 3, 65, 33, 4]}
data_2 = {"a": [100, 4, 33, 32, 55], "b": [12, 55, 34, 76, 2]}
df_1 = pd.DataFrame.from_dict(data_1)
df_2 = pd.DataFrame.from_dict(data_2)
cols = []
for i, col_a in enumerate(df_1.columns):
col_c_pct_change = (df_2.iloc[:, i] - df_1[col_a]) * 100 / df_1[col_a]
cols.append(col_c_pct_change)
df3 = pd.concat(cols, axis=1, keys=[s.name for s in cols])
# replace infs with 0 (or whatever you preferred value is)
df3 = df3.replace([np.inf, -np.inf], np.nan).fillna(0)

a            b
0  4900.000000   140.000000
1     0.000000  1733.333333
2     0.000000   -47.692308
3   433.333333   130.303030
4    25.000000   -50.000000

最新更新