我有一个如下所示的df:
Location Field Value Count
01 Ethnicity minority 124
02 Gender male 96
03 Religion minority 115
04 Gender female 132
我正在使用.loc
将Value
中的值更改为0、1而不是文本。当我使用df.loc[df['Value'] == 'male'] = 0
时
Value
发生了变化,但Field
也发生了变化。如何避免这种情况发生?
此外,此DF是直接从CSV文件创建的,这是我进行的第一个更改,因此这不像是将函数彼此叠加。
答案 0 :(得分:2)
您需要指定列:
df.loc[df['Value'] == 'male', 'Value'] = 0
print(df)
Location Field Value Count
0 1 Ethnicity minority 124
1 2 Gender 0 96
2 3 Religion minority 115
3 4 Gender female 132
或使用np.where进行所有转换:
df['Value'] = np.where(df['Value'].eq('male'), 0, 1)
print(df)
Location Field Value Count
0 1 Ethnicity 1 124
1 2 Gender 0 96
2 3 Religion 1 115
3 4 Gender 1 132
答案 1 :(得分:0)
您也可以使用pandas.DataFrame.replace
df.replace({'Value': {'male':0, 'female':1}})
这将返回替换了值的新数据框。
Location Field Value Count
0 1 Ethnicity minority 124
1 2 Gender 0 96
2 3 Religion minority 115
3 4 Gender 1 132