根据int和字符串条件选择行

时间:2018-05-07 18:57:08

标签: python pandas

我有一个如下所示的数据框:

    Capital Social  Mark    Porte
0   12345           B 
1   0               A
2   0               A
3   12345631        A

如果Capital Social == 0Mark == A我想将Porte变成Big。所以我运行以下代码:

df['Porte'].loc[(df['Capital Social'] == 0) & (df['Mark'] == 'A')]='Big'

然而,当我运行它时,我得到的结果就是相同的df:

    Capital Social  Mark    Porte
0   12345           B 
1   0               A
2   0               A
3   12345631        A

如果我print(df['Capital Social'].dtypes),我会得到Int64

如果我print(df['Mark'].dtypes),我会得到object。我试图运行df['Mark']=df['Mark'].astype(str),但结果仍然是一个对象。这是问题还是我错过了什么?

2 个答案:

答案 0 :(得分:3)

正确的表格是

df.loc[(df['Capital Social'] == 0) & (df['Mark'] == 'A'), 'Porte'] = 'Big'

df['Porte']会返回一个视图/副本,而调用loc会修改副本,而原始的dataFrame保持不变。

答案 1 :(得分:3)

你真的很亲密:

df.loc[(df['Capital Social'] == 0) & (df['Mark'] == 'A'), 'Porte']='Big'