我对 Pandas 很陌生,考虑到新列有自己的索引,我正在尝试向数据框中添加一列。
例如,让我们考虑以下数据:
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])
我想要的: Resulting dataframe
kp2 和 val2 的长度相同,kp 和 val 的长度相同,但是 kp 和 kp2 的长度可能不同,当然还有不同的索引。我对 kp 使用了索引,因为我希望索引是唯一的,因此在添加新列时合并索引。如果有更好的解决方案,请随时提出。 感谢您的帮助。
答案 0 :(得分:2)
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
答案 1 :(得分:1)
您正在寻找熊猫合并方法。
像您之前创建的那样创建一个新的数据框。
df2 = pd.DataFrame({"test2":val2}, index=kp2)
使用数据帧合并命令合并它们:
ddf = df.merge(df2,how='outer',left_index=True,right_index=True,sort=True)
ddf
how='outer' 将帮助您合并 2 个数据帧,其方式类似于 SQL 的 FULL OUTER JOIN。有关其他选项/参数,请查看文档。pandas merge docs