繁体   English   中英

我怎样才能找到两个数据框的相对差异(百分比)?

[英]How can I find the relative difference (percentage) but two data frames?

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

df3 = df1.compare(df2)

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

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

假设两者的形状和数据类型相同,试试这个:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM