python-将多个DataFrame列合并为一个
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-将多个DataFrame列合并为一个,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1619字,纯文字阅读大概需要3分钟。
内容图文
![python-将多个DataFrame列合并为一个](/upload/InfoBanner/zyjiaocheng/681/d3fd40e0fc3445c782d5fc0d9f7b2e11.jpg)
我正在尝试使用一个动态数目的a_P列来转换一个DataFrame像这样
a1_P a2_P weight
0 33297.81 17407.93 14733.23
1 58895.18 43013.57 86954.04
变成新的DataFrame,看起来像这样(按P排序)
P weight
0 17407.93 14733.23
1 33297.81 14733.23
2 43013.57 86954.04
3 58895.18 86954.04
所以到目前为止我正在尝试的是
names = ["a1", "a2"]
p = pd.DataFrame(columns=["P", "weight"])
for i in range(0, len(names)):
p += df[["{}_P".format(names[i]), "weight"]]
并对其进行排序,但这不起作用,因为我猜想列名不相同.
解决方法:
The pandas.melt function的功能类似于您想要的:
pd.melt(df, id_vars=['weight'], value_vars=['a1_P', 'a2_P'], value_name='P')
weight variable P
0 14733.23 a1_P 33297.81
1 86954.04 a1_P 58895.18
2 14733.23 a2_P 17407.93
3 86954.04 a2_P 43013.57
当然,通过在melt语句的末尾附加.sort(‘P’)可以很容易地完成P的排序.
pd.melt(df, id_vars=['weight'], value_vars=['a1_P', 'a2_P'], value_name='P').sort('P')
weight variable P
2 14733.23 a2_P 17407.93
0 14733.23 a1_P 33297.81
3 86954.04 a2_P 43013.57
1 86954.04 a1_P 58895.18
如果您想超级动态,也许可以通过这种奇特的方式生成value_vars:
n_values = 2
value_vars = ["a{}_P".format(i+1) for i in range(0, n_values)]
pd.melt(df, id_vars=['weight'], value_vars=value_vars, value_name='P').sort('P')
若要使索引为[0、1、2、3 …],只需将.reset_index(drop = True)用作链接事件,或类似这样:
df = pd.melt(df, id_vars=['weight'], value_vars=value_vars, value_name='P')
df.sort(inplace=True)
df.reset_index(drop=True, inplace=True)
我个人更喜欢就地操作,因为它们的内存效率更高.
内容总结
以上是互联网集市为您收集整理的python-将多个DataFrame列合并为一个全部内容,希望文章能够帮你解决python-将多个DataFrame列合并为一个所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。