我有以下数据框:

A  |   Date1  | Date2
10 | 2/2/2016 | 3/2/2016
11 | 1/5/2016 | 1/5/2016
12 | 2/3/2016 | 2/3/2016
13 | 1/5/2016 | 3/2/2013


如果Date1中的值等于Date2,我想将A列中的值设为0。
最终结果:

A  |   Date1  | Date2
10 | 2/2/2016 | 3/1/2016
0  | 1/5/2016 | 1/5/2016
0  | 2/3/2016 | 2/3/2016
13 | 1/5/2016 | 3/2/2013


我想这样做而不编写for循环。我可以使用申请吗?

您可以重新创建我的df:

df = pd.DataFrame([[10, "2/2/2016", "3/2/2016" ] , [11, "1/5/2016", "1/5/2016"] , [12 , "2/3/2016" , "2/3/2016" ] , [13, "1/5/2016", "3/2/2013"]])
df.columns = ['A','B','C']

最佳答案

使用jezrael的设置

设定

import pandas as pd


df = pd.DataFrame([[10, "2/2/2016", "3/2/2016" ] ,
                   [11, "1/5/2016", "1/5/2016"] ,
                   [12 , "2/3/2016" , "2/3/2016" ] ,
                   [13, "1/5/2016", "3/2/2013"]])
df.columns = ['A','B','C']


使用loc

df.loc[df.B == df.C, 'A'] = 0

print df

    A         B         C
0  10  2/2/2016  3/2/2016
1   0  1/5/2016  1/5/2016
2   0  2/3/2016  2/3/2016
3  13  1/5/2016  3/2/2013

关于python - 如何通过检查条件来替换dataFrame中的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37421523/

10-12 18:25