gpt4 book ai didi

python - Pandas Dataframe 用其他列的第一个值填充列

转载 作者:太空宇宙 更新时间:2023-11-03 23:55:17 25 4
gpt4 key购买 nike

我有一个这样的 df:

   Group  Col1  Col2  Col3
0 A NaN NaN NaN
1 A 11 NaN NaN
2 A 11 52 3
3 A 11 52 3
4 B NaN NaN NaN
5 B NaN NaN 18
6 B NaN 2 18
7 B 20 2 18
8 B 20 2 18
9 C NaN NaN NaN
10 C NaN NaN NaN
11 C NaN 202 NaN
12 C NaN 202 NaN
13 C NaN 202 6
14 C NaN 202 6

我想基于“组”列构建“值”列,同时构建列 Col1、Col2 和 Col3 的第一个值。所需的 df 将是这样的:

   Group  Col1  Col2  Col3  Value
0 A NaN NaN NaN NaN
1 A 11 NaN NaN 11 # first value in Col1
2 A 11 52 3 11
3 A 11 52 3 11
4 B NaN NaN NaN NaN
5 B NaN NaN 18 18 # first value in Col3
6 B NaN 2 18 18
7 B 20 2 18 18
8 B 20 2 18 18
9 C NaN NaN NaN NaN
10 C NaN NaN NaN NaN
11 C NaN 202 NaN 202 # first value in Col2
12 C NaN 202 NaN 202
13 C NaN 202 6 202
14 C NaN 202 6 202

任何帮助将不胜感激!非常感谢!

最佳答案

这是使用 ffill 的一种方法并取每个组中的第一个有效值:

s = slice('Col1','Col3')
df['Value'] = (df.loc[:,s]
.ffill(1)
.groupby(df.Group)
.transform('first').Col3
.where(df.loc[:,s].any(1)))

print(df)

Group Col1 Col2 Col3 Value
0 A NaN NaN NaN NaN
1 A 11.0 NaN NaN 11.0
2 A 11.0 52.0 3.0 11.0
3 A 11.0 52.0 3.0 11.0
4 B NaN NaN NaN NaN
5 B NaN NaN 18.0 18.0
6 B NaN 2.0 18.0 18.0
7 B 20.0 2.0 18.0 18.0
8 B 20.0 2.0 18.0 18.0
9 C NaN NaN NaN NaN
10 C NaN NaN NaN NaN
11 C NaN 202.0 NaN 202.0
12 C NaN 202.0 NaN 202.0
13 C NaN 202.0 6.0 202.0
14 C NaN 202.0 6.0 202.0

关于python - Pandas Dataframe 用其他列的第一个值填充列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57948103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com