【问题标题】:How to copy one DataFrame column in to another Dataframe if their indexes values are the same如果它们的索引值相同,如何将一个 DataFrame 列复制到另一个 DataFrame
【发布时间】:2016-09-03 10:45:51
【问题描述】:

在名称为“keys”的列中创建包含一些重复单元格值的 DataFrame 后:

import pandas as pd
df = pd.DataFrame({'keys': [1,2,2,3,3,3,3],'values':[1,2,3,4,5,6,7]})

我继续创建另外两个 DataFrame,它们是原始 DataFrame df 的合并版本。那些新创建的 DataFrame 在“keys”列下将没有重复的单元格值:

df_sum = df_a.groupby('keys', axis=0).sum().reset_index()
df_mean = df_b.groupby('keys', axis=0).mean().reset_index()

如您所见,df_sum['values'] 单元格的值全部加在一起。 而df_mean['values'] 单元格值是使用mean() 方法平均的。 最后,我将两个数据框中的“值”列重命名为:

df_sum.columns = ['keys', 'sums']
df_mean.columns = ['keys', 'means']

现在我想将df_mean['means'] 列复制到数据框df_sum

如何做到这一点?

下面的 Photoshop 图像说明了我想要创建的数据框。 'sums' 和 'means' 列都合并到一个 DataFrame 中:

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    有几种方法可以做到这一点。在数据帧之外使用merge 函数是最有效的。

    df_both = df_sum.merge(df_mean, how='left', on='keys')
    
    df_both
    
    Out[1]:
       keys  sums  means
    0     1     1    1.0
    1     2     5    2.5
    2     3    22    5.5
    

    【讨论】:

      【解决方案2】:

      我认为pandas.merge() 是您正在寻找的功能。喜欢pd.merge(df_sum, df_mean, on = "keys")。此外,这个结果也可以总结为一个agg函数如下:

      df.groupby('keys')['values'].agg(['sum', 'mean']).reset_index()
      #  keys sum mean
      #0    1   1  1.0
      #1    2   5  2.5
      #2    3  22  5.5
      

      【讨论】:

        猜你喜欢
        • 2021-10-30
        • 2020-06-16
        • 1970-01-01
        • 2016-02-17
        • 2017-09-02
        • 1970-01-01
        • 1970-01-01
        • 2023-02-09
        • 1970-01-01
        相关资源
        最近更新 更多