gpt4 book ai didi

python - 如何根据 DataFrame 中前一行的值标记特定值?

转载 作者:行者123 更新时间:2023-12-01 06:37:37 25 4
gpt4 key购买 nike

数据如下所示:

Ctgr
A
B
B
C
D
E
F

我正在寻找的结果是:

Ctgr|subctgr
A | A
B | A
B | A
C | A
D | D
E | D
F | D

也就是说subctgr是由每个“组”第一行的值决定的。
但是,我不知道如何区分 python 中的每个“组”,尽管它们由 NaN 值分隔。

最佳答案

拳头测试缺失行 Series.isna ,然后通过与 Series.shift 比较来获取 groups 的第一个值编辑掩码值并通过 ffill 创建由以前的值填充的新列。最后设置新列 numpy.where :

#for test missing values
m = df['Ctgr'].isna()
#for test emtsy strings
#m = df['Ctgr'].eq('')
df['subctgr'] = np.where(m,np.nan,df['Ctgr'].where(m.ne(m.shift())).ffill())
print (df)
Ctgr subctgr
0 A A
1 B A
2 B A
3 C A
4 NaN NaN
5 D D
6 E D
7 F D

详细信息:

print (df.assign(m = df['Ctgr'].isna(),
mask = m.ne(m.shift()),
first = df['Ctgr'].where(m.ne(m.shift())),
ffill = df['Ctgr'].where(m.ne(m.shift())).ffill(),
subctgr = np.where(m,np.nan,df['Ctgr'].where(m.ne(m.shift())).ffill())))
Ctgr m mask first ffill subctgr
0 A False True A A A
1 B False False NaN A A
2 B False False NaN A A
3 C False False NaN A A
4 NaN True True NaN A NaN
5 D False True D D D
6 E False False NaN D D
7 F False False NaN D D

关于python - 如何根据 DataFrame 中前一行的值标记特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59597325/

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