gpt4 book ai didi

python - 比较不同 Pandas 数据框中的列

转载 作者:太空狗 更新时间:2023-10-29 22:05:19 34 4
gpt4 key购买 nike

我有两个数据框,一个是从 1990 年开始的每日信息,另一个是从 2000 年开始的每日信息。两个数据框都包含到 2016 年结束的信息。

df1:

Date A B C
1990-01-01 3.0 40.0 70.0
1990-01-02 20.0 50.0 80.0
1990-01-03 30.0 60.0 90.0
1990-01-04 2.0 1.0 1.0
1990-01-05 1.0 8.0 3.0

df2:

Date A B C
2000-01-01 NaN NaN NaN
2000-01-02 5.0 NaN NaN
2000-01-03 1.0 NaN 5.0
2000-01-04 2.0 4.0 8.0
2000-01-05 1.0 3.0 4.0

我需要比较 df1 和 df2 中具有相同名称的列,这通常不会太复杂,但我需要从两者 给定列的数据帧(例如来自 df22000-01-02'A'2000-01- 'B' 中的 04)。如果从那时起它们相同,我需要返回 True,如果它们不同,我需要返回 False。我从合并开始,这给了我:

df2.merge(df1, how = 'left', on = 'Date')


Date A.x B.x C.x A.y B.y C.y
2000-01-01 NaN NaN NaN 3.0 4.0 5.0
2000-01-02 5.0 NaN NaN 5.0 9.0 2.0
2000-01-03 1.0 NaN 5.0 1.0 6.0 5.0
2000-01-04 2.0 4.0 8.0 2.0 4.0 1.0
2000-01-05 1.0 3.0 4.0 1.0 3.0 3.0

我已经弄清楚如何找到共同的日期,但对如何进行相同/不同的比较感到困惑。谁能帮我从有共同值(value)的地方比较列?字典是一种有用的输出格式,但不是必需的:

comparison_dict = {
"A" : True,
"B" : True,
"C" : False
}

非常感谢。

最佳答案

假设 Date 列是索引。

  1. 堆叠默认会掉nan
  2. “内部”逻辑保持一致
  3. 检查是否相等
  4. 分组并检查所有True

pd.Series.eq(*df1.stack().align(df2.stack(), 'inner')).groupby(level=1).all()

如果Date不是索引

pd.Series.eq(
*df1.set_index('Date').stack().align(
df2.set_index('Date').stack(), 'inner'
)
).groupby(level=1).all()

关于python - 比较不同 Pandas 数据框中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52119585/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com