如何解决如何用dict \ df用一个col上的条件替换列列表
我想按条件使用dict \ df更改列列表中的值 我有df \ dict了
类似这样的东西
list_of_cols=["col1",.."col5"]
df[list_of_cols]=where[df["A"]==dict],dict
这是数据
data={"col1":[np.nan,3,4,5,9,2,6],"col2":[4,6,1,5],"col3":[7,11,7],"col4":[14,22,8,np.nan,9],"col5":[0,7,"type":["A","A","C","B","E"],"number":["one","two","one","two"]}
df=pd.DataFrame.from_dict(data)
df
这是我的dict \ df,我想将df [“ type”]与dict映射 因此,如果type == A,col1-col5将为0
my_dict={"A":0,"B":21,"C":14,"D":9}
my_dict=pd.DataFrame.from_dict(my_dict,orient='index')
my_dict
我喜欢得到的东西
data={"col1":[0,14,21,"col2":[0,"col3":[0,"col4":[0,0.9],"two"]}
df=pd.DataFrame.from_dict(data)
df
解决方法
IIUC,使用isin
过滤类型,然后使用apply
和map
直接分配:
m = df["type"].isin(my_dict)
df.loc[m,"col1":"col5"] = df.loc[m,"col1":"col5"].apply(lambda d: pd.Series.map(df["type"],my_dict))
print (df)
col1 col2 col3 col4 col5 type number
0 0.0 0.0 0.0 0.0 0.0 A one
1 0.0 0.0 0.0 0.0 0.0 A two
2 14.0 14.0 14.0 14.0 14.0 C two
3 0.0 0.0 0.0 0.0 0.0 A one
4 21.0 21.0 21.0 21.0 21.0 B one
5 0.0 0.0 0.0 0.0 0.0 A two
6 6.0 5.0 7.0 9.0 9.0 E two
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。