如何对同一列中的重复值执行IF语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何对同一列中的重复值执行IF语句相关的知识,希望对你有一定的参考价值。

我有一个DataFrame,想在列中查找重复的值,如果找到,则创建一个新列,为每个重复的情况添加一个零,但保持原始值不变。

原始DataFrame:

Code1   
1      
2      
3      
4      
5     
1      
2     
1      
1      

新数据框:

Code1   Code2
1      1
2      2
3      3
4      4
5      5
6      6
1      10
2      20
1      100
1      1000
6      60
答案

使用groupbycumcount

df.assign(counts = df.groupby("Code1").cumcount(), 
          Code2=lambda x:x["Code1"]*10**(x["counts"])
         ).drop("counts", axis=1)
   Code1  Code2
0      1      1
1      2      2
2      3      3
3      4      4
4      5      5
5      1     10
6      2     20
7      1    100
8      1   1000

可能有一个使用transform的解决方案(但是我现在没有时间进行研究)。但是,这里确实很清楚发生了什么]

另一答案
>>> df.assign(
        Code2=df.groupby(['Code1'], as_index=False)['Code1']
                .transform(lambda x: x * (10 ** x.duplicated().cumsum())))
   Code1  Code2
0      1      1
1      2      2
2      3      3
3      4      4
4      5      5
5      1     10
6      2     20
7      1    100
8      1   1000
另一答案
import pandas as pd

data = [1, 2, 3, 4, 5, 1, 2, 1, 1]

# Create the pandas DataFrame
df = pd.DataFrame(data, columns=['Code1'])

code2 = []

x = {}
for d in data:
    if d not in x:
        x[d] = d
    else:
        x[d] = x[d] * 10

    code2.append(x[d])

df['Code2'] = code2

print(df)

以上是关于如何对同一列中的重复值执行IF语句的主要内容,如果未能解决你的问题,请参考以下文章

如果谷歌电子表格的同一列中的值重复,如何突出显示单元格?

sql中如何使一列中的多个重复数据只显示第一条

ORACLE中,如何使用UPDATE修改重复列

MySQL IF 语句然后 COUNT 列中的值[重复]

c#中同一个Datatable中的如何把重复的记录合并起来,

计算唯一字段的列中的重复值