我有一个元数据的数据框表示为DF_0
,然后是一个实际数据的数据框(DF_1
)。我想在我的数据帧上使用pd.concat
,但不在索引上使用DF_0
。 DF_1
的索引是任意的,attr_1
的索引对应DF_0
的{{1}}中的值。
我能想到的唯一方法是:
(1)使attr_1
我的索引然后合并,我宁愿不做;或
(2)排序然后合并[但丢失的数据可能会搞砸了]。我觉得pandas
已经想过这个。
有没有人知道如何使用pd.concat
或类似的东西[我的真实数据有字符串,浮点数,整数]来合并2个[或更多?]数据帧沿着“轴”表示的特定数据框中特定列的值?
值可能与否有序。我上面描述的方式是唯一的方法吗?他们看起来很乱......
DF_0 = pd.DataFrame(np.arange(15).reshape(5,3),
columns=["attr_%d"%j for j in range(3)])
# attr_0 attr_1 attr_2
# 0 0 1 2
# 1 3 4 5
# 2 6 7 8
# 3 9 10 11
# 4 12 13 14
DF_1 = pd.DataFrame([[0,1,0,1,1],[0,0,0,1,0],[1,1,1,0,1]],
index = ["other_%d"%j for j in range(3)],
columns = [1,4,7,10,13]).T
# other_0 other_1 other_2
# 1 0 0 1
# 4 1 0 1
# 7 0 0 1
# 10 1 1 0
# 13 1 0 1
# What I want
DF_X = pd.DataFrame(
np.concatenate([DF_0.as_matrix(), DF_1.as_matrix()], axis=1),
columns=list(DF_0.columns) + list(DF_1.columns))
# attr_0 attr_1 attr_2 other_0 other_1 other_2
# 0 0 1 2 0 0 1
# 1 3 4 5 1 0 1
# 2 6 7 8 0 0 1
# 3 9 10 11 1 1 0
# 4 12 13 14 1 0 1
答案 0 :(得分:3)
您希望在attr_1
的{{1}}列和DF_0
的索引中合并:
DF_1
输出:
DF_X = pd.merge(DF_0, DF_1, left_on='attr_1', right_index=True)
print(DF_X)
答案 1 :(得分:2)
您正在寻找concat()方法的axis=1
参数。
Here是一个很好的解释,有不同类型的加入/合并/连接的例子 演示:
In [6]: pd.concat([DF_0, DF_1], axis=1)
Out[6]:
attr_0 attr_1 attr_2 other_0 other_1 other_2 other_3
0 0 1 2 1 0 0 1
1 3 4 5 4 1 0 1
2 6 7 8 7 0 0 1
3 9 10 11 10 1 1 0
4 12 13 14 13 1 0 1
答案 2 :(得分:1)