python-3.x - 如何通过合并索引将列添加到数据框中?
问题描述
我对熊猫很陌生,考虑到新列有自己的索引,我正在尝试向数据框添加一列。
例如,让我们考虑以下数据:
kp = np.array([0.0, 1.0, 2.0, 3.0, 4.0])
val = np.array([0.1, 0.2, 0.3, 0.4, 0.5])
df = pd.DataFrame({"test":val}, index=kp)
现在,考虑到新索引可能与 df 中使用的索引不同,我想在此数据框中添加一个新列:
kp2 = np.array([0.5, 1.5, 2.5, 3.5, 4.0])
val2 = np.array([0.6, 0.7, 0.8, 0.9, 0.10])
我想要什么: 结果数据框
kp2 和 val2 的长度相同,kp 和 val 的长度相同,但 kp 和 kp2 的长度可能不同,当然索引也不同。我使用 kp 的索引,因为我希望索引是唯一的,因此在添加新列时合并索引。如果有更好的解决方案,请随时提出。谢谢你的帮助。
解决方案
import pandas as pd
import numpy as np
#your data:
kp = np.array([0.0, 1.0, 2.0, 3.0, 4.0])
val = np.array([0.1, 0.2, 0.3, 0.4, 0.5])
kp2 = np.array([0.5, 1.5, 2.5, 3.5, 4.0])
val2 = np.array([0.6, 0.7, 0.8, 0.9, 0.10])
df = pd.DataFrame({"test":val}, index=kp)
df2 = pd.DataFrame({"test2":val2}, index=kp2)
你可以简单地通过使用concat()
方法来做到这一点:
result=pd.concat((df,df2),axis=1)
最后使用sort_index()
方法:
result=result.sort_index()
您可以通过以下方式在 1 行中执行此操作:
result=pd.concat((df,df2),axis=1).sort_index()
#Output of result:
test test2
0.0 0.1 NaN
0.5 NaN 0.6
1.0 0.2 NaN
1.5 NaN 0.7
2.0 0.3 NaN
2.5 NaN 0.8
3.0 0.4 NaN
3.5 NaN 0.9
4.0 0.5 0.1
推荐阅读
- java - 在 JVM 级别控制 2 的平方?
- netcdf - 使用“自以来”的时间单位解码 netcdf 数据时出现 xarray 错误
- javascript - JavaScript 对象推送到数组但无法正常工作
- matlab - 如何在 MATLAB 上使用多个 GPU - 设备内存不足
- variables - Jmeter函数解析包含$符号的字符串
- java - 如何从单个 Java 文件生成调用图?
- python - 在列表上迭代(屈服)
- python-3.x - Python Selenium Chrome 获取默认下载路径
- python - 如何将二进制转换为字符串?
- python - 如何构造复杂函数以应用于 pandas df 的 col?