Pro*_*ken 4 python duplicates dataframe pandas
我有一个pandas数据框,其中包含一个可能重复的列.我想创建一个列,如果行重复则生成1,如果不重则则生成0.
所以,如果我有:
A|B
1 1|x
2 2|y
3 1|x
4 3|z
Run Code Online (Sandbox Code Playgroud)
我会得到:
A|B|C
1 1|x|1
2 2|y|0
3 1|x|1
4 3|z|0
Run Code Online (Sandbox Code Playgroud)
我试过df['C'] = np.where(df['A']==df['A'], '1', '0')但这只是在C中创建了一个全1的列.
你需要Series.duplicated与参数keep=False的所有副本,然后再投布尔面膜(TrueS和FalseS)以1S和0由s astype通过int,必要时再投至str:
df['C'] = df['A'].duplicated(keep=False).astype(int).astype(str)
print (df)
A B C
1 1 x 1
2 2 y 0
3 1 x 1
4 3 z 0
Run Code Online (Sandbox Code Playgroud)
如果需要检查列中的重复项A并B一起使用DataFrame.duplicated:
df['C'] = df.duplicated(subset=['A','B'], keep=False).astype(int).astype(str)
print (df)
A B C
1 1 x 1
2 2 y 0
3 1 x 1
4 3 z 0
Run Code Online (Sandbox Code Playgroud)
和numpy.where解决方案:
df['C'] = np.where(df['A'].duplicated(keep=False), '1', '0')
print (df)
A B C
1 1 x 1
2 2 y 0
3 1 x 1
4 3 z 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2763 次 |
| 最近记录: |