首页 > 解决方案 > 如何通过合并索引将列添加到数据框中?

问题描述

我对熊猫很陌生,考虑到新列有自己的索引,我正在尝试向数据框添加一列。

例如,让我们考虑以下数据:

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 的索引,因为我希望索引是唯一的,因此在添加新列时合并索引。如果有更好的解决方案,请随时提出。谢谢你的帮助。

标签: python-3.xpandasdataframe

解决方案


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

推荐阅读