我有一个如下所示的数据框:
Capital Social Mark Porte
0 12345 B
1 0 A
2 0 A
3 12345631 A
如果Capital Social == 0
和Mark == 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)
,但结果仍然是一个对象。这是问题还是我错过了什么?
答案 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'