【问题标题】:Pandas dataframe merge on rowsPandas 数据框在行上合并
【发布时间】:2017-03-05 08:58:48
【问题描述】:

我有一个名为 df 的数据框,如下所示,我想将 5 行转换为合并它们的单行。但 df=df.groupby(df.index).sum() 似乎不适用于前两列,任何想法为什么以及如何纠正它?

【问题讨论】:

    标签: python pandas dataframe merge dataset


    【解决方案1】:

    GroupBy.sum() 方法将忽略所有非数字数据类型。

    演示:

    In [137]: df
    Out[137]:
       a  b  c    s       date
    0  9  2  6  __6 2001-01-01
    1  0  1  2  __2 2001-01-02
    2  6  7  5  __5 2001-01-03
    3  6  8  5  __5 2001-01-04
    4  0  3  8  __8 2001-01-05
    
    In [138]: df.groupby('a').sum()
    Out[138]:
        b   c
    a
    0   4  10
    6  15  10
    9   2   6
    
    In [139]: df.dtypes
    Out[139]:
    a                int32
    b                int32
    c                int32
    s               object
    date    datetime64[ns]
    dtype: object
    

    【讨论】:

    • 但是,我所有的列都是 float64 类型
    • @JayanthKumar,我以前从未见过像BL 这样的浮点值;)(EVENT_ID 列呢)?
    • 我实际上是指新合并数据框中的列(不包括 EVENT_ID 列)。请参阅ACTVOFT 列。在合并的数据框中,它打印出 7 但确实应该是 2 对吗?我的问题是为什么会这样,该列的 dtype 是 float64
    • @JayanthKumar,前五行应该是 2。输出是什么:print(df.ix[df.PATNO==14281, 'ACTVOFT'].sum())
    • 它的 7 很抱歉df.head() 命令没有显示完整的数据框,这就是我有点困惑的原因。该命令工作正常。谢谢!!
    猜你喜欢
    • 2017-12-07
    • 1970-01-01
    • 2017-07-10
    • 2018-09-04
    • 2020-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    相关资源
    最近更新 更多