python-大熊猫根据来自另一列的值映射列数据,使用if来确定要使用哪个字典
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-大熊猫根据来自另一列的值映射列数据,使用if来确定要使用哪个字典,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1415字,纯文字阅读大概需要3分钟。
内容图文
![python-大熊猫根据来自另一列的值映射列数据,使用if来确定要使用哪个字典](/upload/InfoBanner/zyjiaocheng/693/68602840c45f457d933f0e85c62a5831.jpg)
我有以下数据框:
df = pd.DataFrame([['Person1', 'CT', 2017],
['Person2', 'FL', 2017],
['Person3', 'TX', 2017],
['Person1', 'TX', 2016]], columns=['Name', 'State', 'Year'])
还有下面的两个映射表:
state_map = {'CT': 'Connecticut', 'FL': 'Florida', 'TX':'Texas'}
state_map2 = {'CT': 'ABC-CT', 'FL': 'BBC-Florida', 'TX':'CDA-TX'}
数据如下所示:
Name State Year
0 Person1 CT 2017
1 Person2 FL 2017
2 Person3 TX 2017
3 Person1 TX 2016
我想找到一种添加新列的方法,该列使用if条件确定是否使用从state_map或state_map2映射的值映射的值.因此,如果df [df [‘Name’] ==’Person1′],则使用state_map,否则使用state_map2.
最终输出应如下所示:
Name State Year New_State_Name
0 Person1 CT 2017 Connecticut
1 Person2 FL 2017 BBC-Florida
2 Person3 TX 2017 CDA-TX
3 Person1 TX 2016 Texas
我尝试了以下代码,但是没有用.
df['New_State_Name'] = [state_map[x] if df[df['Name'] == 'Person1'] else
state_map2[x] for x in df['State']]
我收到一个错误消息:
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty,
a.bool(), a.item(), a.any() or a.all().
解决方法:
使用np.where:
df['New_State_Name'] = np.where(df['Name']=='Person1',df['State'].map(state_map),df['State'].map(state_map2))
输出:
Name State Year New_State_Name
0 Person1 CT 2017 Connecticut
1 Person2 FL 2017 BBC-Florida
2 Person3 TX 2017 CDA-TX
3 Person1 TX 2016 Texas
内容总结
以上是互联网集市为您收集整理的python-大熊猫根据来自另一列的值映射列数据,使用if来确定要使用哪个字典全部内容,希望文章能够帮你解决python-大熊猫根据来自另一列的值映射列数据,使用if来确定要使用哪个字典所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。