输入:
ColumnA:
A
A
B
B
C
C
输出
ColumnB:
0
1
0
1
0
1
条件是:如果A列中的值是第一次出现,则列B将为0。否则B列将为1.谢谢!在Python中使用pandas。
答案 0 :(得分:1)
使用duplicated
+ astype
掩码到int
:
print (df.duplicated())
0 False
1 True
2 True
3 False
4 True
5 False
6 True
dtype: bool
df['ColumnB'] = df.duplicated().astype(int)
print (df)
ColumnA ColumnB
0 A 0
1 A 1
2 A 1
3 B 0
4 B 1
5 C 0
6 C 1
答案 1 :(得分:0)
df=pd.DataFrame({'ColumnA': {0: 'A', 1: 'A', 2: 'B', 3: 'B', 4: 'C', 5: 'C'}})
df
Out[284]:
ColumnA
0 A
1 A
2 B
3 B
4 C
5 C
使用apply来检查之前是否出现过该值。
df['ColumnB'] = df.apply(lambda x: int(x.ColumnA in df.iloc[:x.name,0].tolist()), axis=1)
df
Out[287]:
ColumnA ColumnB
0 A 0
1 A 1
2 B 0
3 B 1
4 C 0
5 C 1