Pandas将同一行合并到新列中,同时保留该行(不是简单的groupby)

2024-09-30 01:34:21 发布

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

我是一个熊猫初学者,需要一些帮助

我有以下数据帧:

ID         Val-A   Val-B

aab12      lower   -30
dbc11      lower   -10
aab12      upper   50
dbc11      upper   20

我想从上一个数据帧生成一个新的数据帧,但想不出一种方法:

ID         Val-A  Val-B  upper-lower
aab12      lower  -30    80
aab12      upper  50     80
dbc11      lower  -10    30
dbc11      upper  20     30   

任何帮助都将不胜感激


Tags: 数据方法idvalupperlower初学者dbc11
2条回答

假设您有两个正数:

df['upper-lower']=df.groupby('ID')['Val-B'].apply(lambda x : x.diff().abs().bfill())
df.sort_values('ID')
Out[394]: 
      ID  Val-A  Val-B  upper-lower
0  aab12  lower    -30         80.0
2  aab12  upper     50         80.0
1  dbc11  lower    -10         30.0
3  dbc11  upper     20         30.0

我想你首先需要^{}^{}来获得好的单调唯一索引,然后^{}^{}sum

df = df.sort_values('ID').reset_index(drop=True)
df['upper-lower'] = df['Val-B'].abs().groupby(df['ID']).transform(sum)

print (df)
      ID  val-A  Val-B  upper-lower
0  aab12  lower    -30           80
1  aab12  upper     50           80
2  dbc11  lower    -10           30
3  dbc11  upper     20           30

相关问题 更多 >

    热门问题