如何在一个数据帧中合并观测值,其中除一列外所有列都相同?

2024-10-08 19:25:08 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个熊猫数据帧,有5列,大约100000行。举个例子:

    V1      V2          V3          V4  V5
0   2014    Alfa Romeo  159         1   157
1   2014    Alfa Romeo  GIULIETTA   1   119
2   2014    Alfa Romeo  GIULIETTA   3   119

如果V1、V2、V3和V5中的值完全相同,我要做的是求V4列中的值的和

    V1      V2          V3          V4  V5
0   2014    Alfa Romeo  159         1   157
1   2014    Alfa Romeo  GIULIETTA   4   119

起初我以为groupby会做这项工作,但后来我做了

df.groupby(['V1', V2','V3', 'V5' ]).sum()

我丢失了V3列中的一些信息,例如,我应该有10种不同类型的颜色,但现在只有3种。 如何解决


Tags: 数据信息类型dfv3例子v2v4
1条回答
网友
1楼 · 发布于 2024-10-08 19:25:08

我怀疑您正在处理'V1'、'V2'、'V3'或'V5'列中丢失的数据,而groupby中省略了这些数据。看这个SO Post

解决方法是使用fillna():

df.fillna("Missing").groupby(['V1','V2','V3','V5']).V4.sum()

示例:

打印(df)

       V1          V2         V3  V4   V5
0  2014.0  Alfa Romeo        159   1  157
1  2014.0  Alfa Romeo  GIULIETTA   1  119
2  2014.0  Alfa Romeo  GIULIETTA   3  119
3     NaN  Alfa Romeo      Black   4  119

df.groupby(['V1','V2','V3','V5']).V4.sum()

缺少“黑色”:

V1      V2          V3         V5 
2014.0  Alfa Romeo  159        157    1
                    GIULIETTA  119    4
Name: V4, dtype: int64

使用fillna():

df.fillna("Missing").groupby(['V1','V2','V3','V5']).V4.sum()

V1       V2          V3         V5 
2014.0   Alfa Romeo  159        157    1
                     GIULIETTA  119    4
Missing  Alfa Romeo  Black      119    4
Name: V4, dtype: int64

相关问题 更多 >

    热门问题