尝试修改数据框列中的所有值,其中另一列中的值等于特定值。
我正在使用数据列df
,其中包含a,b,c,d列。我首先使用
df [“ e”] = df [“ d”]
然后,我用.loc
去了:
df.loc[df["d"] == "Unknown", "e"] = "Not Unknown!"
我得到一个:
TypeError: 'Series' objects are mutable, thus they cannot be hashed
在其他情况下,这种做法过去很奏效,我感到非常困惑,而且我似乎无法弄清楚到底发生了什么。对于信息,dtype为“ d”是一个字符串。如果我直接.loc
,它将返回预期结果。
由于我正在更改列d的所有值,因此我还认为复制列可能是问题所在,因此我尝试使用以下另一种方法复制它:
df = df.assign(e=pd.Series(np.random.randn(len(df))).values)
但是得到了相同的结果。
感谢您发现我的(我确信会是)明显错误的任何帮助!
编辑:来自df的示例,
a b c d e
0 21838344 00001 50 Unknown Unknown
1 35652924 00001 80 Unknown Unknown
2 35652925 00001 80 Unknown Unknown
3 31206900 00001 80 Unknown Unknown
4 37544700 00001 80 Unknown Unknown
答案 0 :(得分:0)
import pandas as pd
data = [['2334','00001','50','Unknown'],['6754','00001','80','Unknown']]
df = pd.DataFrame(data, columns = ['a','b','c','d'])
df['e'] = df['d']
df.loc[df['d'] == 'Unknown', 'e'] = 'Not Unknown!'
完全为我工作。