gpt4 book ai didi

python - 如何在 Pandas DataFrame 列中查找连续值并替换值

转载 作者:行者123 更新时间:2023-12-05 03:28:28 34 4
gpt4 key购买 nike

我有一个下面的数据框

Col1    Col2    Col3
A ABC 100
B BCD 200
C CDA 300
D CDA 400
E CDA 500
F EFG 600
G XYZ 700
H XYZ 800
I PQR 900

我们可以看到,在 Col2 中,CDA 重复了 3 次,XYZ 重复了 2 次。

现在我需要创建新列 NewCol4 并检查连续值,如果有连续值只需在最后添加下划线并在下划线后添加数字,如果它不是连续值,则保留原样。

我需要以下格式的输出。

Col1    Col2    Col3   NewCol4
A ABC 100 ABC
B BCD 200 BCD
C CDA 300 CDA_1
D CDA 400 CDA_2
E CDA 500 CDA_3
F EFG 600 EFG
G XYZ 700 XYZ_1
H XYZ 800 XYZ_2
I PQR 900 PQR

我是 Pandas 的新手,有什么方法可以实现上述输出,这真的很有帮助。

最佳答案

这是另一个“单行”版本:

# Create NewCol4 by adding increments to col2 for those groups that have more than one element
df2 = (df.assign(NewCol4 = df['Col2'] + '_' + (df.groupby('Col2').cumcount()+1).astype(str))
.groupby('Col2').filter(lambda g:len(g)>1)
)

# Join to the original. This will leave NaNs in NewCol4 for single-element groups
df3 = df.join(df2['NewCol4'])

# Fill NaNa from Col2
df3['NewCol4'] = df3['NewCol4'].fillna(df['Col2'])

df3 现在看起来像这样

    Col1    Col2      Col3  NewCol4
-- ------ ------ ------ ---------
0 A ABC 100 ABC
1 B BCD 200 BCD
2 C CDA 300 CDA_1
3 D CDA 400 CDA_2
4 E CDA 500 CDA_3
5 F EFG 600 EFG
6 G XYZ 700 XYZ_1
7 H XYZ 800 XYZ_2
8 I PQR 900 PQR

关于python - 如何在 Pandas DataFrame 列中查找连续值并替换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71256877/

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