给定一个列值基于某些条件返回另一个列值

时间:2017-05-31 13:23:26

标签: python python-2.7 pandas numpy

输入:

ColumnA:
A
A
B
B
C
C

输出

ColumnB:
0
1
0
1
0
1

条件是:如果A列中的值是第一次出现,则列B将为0。否则B列将为1.谢谢!在Python中使用pandas。

2 个答案:

答案 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