如何对同一列中的重复值执行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
答案
使用groupby
和cumcount
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语句的主要内容,如果未能解决你的问题,请参考以下文章