【问题标题】:use pandas to join two dataframes使用 pandas 连接两个数据框
【发布时间】:2021-10-09 23:12:16
【问题描述】:

我有两个数据框:

df1:
index   count1
A       1
B       1
C       1

df2:
index   count2
B       2
C       2
D       2

而我想要的是:

index   count1   count2   diff
A       1        0        1
B       1        2        -1
C       1        2        -1
D       0        2        -2

在 pandas 的文档和其他帖子中尝试了几个示例,但没有一个对我有用。 谢谢

【问题讨论】:

标签: python pandas


【解决方案1】:

这个怎么样:

>>> from datar.all import *
>>> 
>>> df1 = tibble(index=LETTERS[:3], count1=1)
>>> df2 = tibble(index=LETTERS[1:4], count2=2)
>>> 
>>> df1 >> full_join(df2) >> replace_na(0) >> mutate(diff=f.count1-f.count2)
     index    count1    count2      diff
  <object> <float64> <float64> <float64>
0        A       1.0       0.0       1.0
1        B       1.0       2.0      -1.0
2        C       1.0       2.0      -1.0
3        D       0.0       2.0      -2.0

datar 由 pandas 提供支持,并将 dplyr 和相关包从 R 移植到 python。

我是包的作者。

【讨论】:

    【解决方案2】:

    为此使用 Pandas 中的 Concatenate 函数。

    frames = [df1, df2, df3]
    
    result = pd.concat(frames)
    

    【讨论】:

      【解决方案3】:

      如果可能,我们可以 join 外部,然后将 fillna 与 0 (downcast='infer') 向下转换为 int。然后减去两列:

      df3 = df1.join(df2, how='outer').fillna(0, downcast='infer')
      df3['diff'] = df3['count1'] - df3['count2']
      

      concataxis=1fillna 然后减去:

      df3 = pd.concat([df1, df2], axis=1).fillna(0, downcast='infer')
      df3['diff'] = df3['count1'] - df3['count2']
      

      df3:

         count1  count2  diff
      A       1       0     1
      B       1       2    -1
      C       1       2    -1
      D       0       2    -2
      

      数据和导入:

      import pandas as pd
      
      df1 = pd.DataFrame({'count1': {'A': 1, 'B': 1, 'C': 1}})
      
      df2 = pd.DataFrame({'count2': {'B': 2, 'C': 2, 'D': 2}})
      

      【讨论】:

        猜你喜欢
        • 2018-09-27
        • 2018-05-10
        • 2020-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-02
        • 2015-07-08
        • 2021-07-25
        相关资源
        最近更新 更多