我有两个数据框,我想制作一个数据框。
我是索引,V是我感兴趣的值。
df1就像
我 V
A 4
B 5
C 8
D 6
F 2
df2就像
我 V
A 8
C 6
D 9
E 4
G 7
我想要类似
的输出我 V1 v2
A 4 8
B 5 -
C 8 6
D 6 9
E - 4
F 2 -
G - 7
Pandas中有直接方法可以做到这一点吗?还是我必须使用循环遍历所有索引的集合并逐个单元格地输入值?
如您所见,df1和df2的唯一行很少。
我很抱歉这些表格的格式。
我还不能弄清楚该如何格式化。
编辑:是的,我最初发布时使用了df1的错误数据。
最后我使用合并。
答案 0 :(得分:1)
是的,您可以根据需要使用合并:
df1 = pd.DataFrame({"C1": ["A","B", "C", "D", "F" ] , "C2": [4,5,8,6,2]})
df2 = pd.DataFrame({"C1": ["A","C", "D", "E", "G" ], "C2": [8,6,9,4,7]})
pd.merge(df1, df2, on="C1", how="outer").sort_values("C1")
这给出了以下内容
C1 C2_x C2_y
0 A 4.0 8.0
1 B 5.0 NaN
2 C 8.0 6.0
3 D 6.0 9.0
5 E NaN 4.0
4 F 2.0 NaN
6 G NaN 7.0
答案 1 :(得分:0)
您甚至不需要合并。只需使用df1
和df2
作为列来构造一个新的DataFrame。
index2 = 'abcdef'
index1 = 'abcdeg'
df1 = pd.DataFrame(index=list(index1), data=list(range(len(index1))))
df2 = pd.DataFrame(index=list(index2), data=list(range(len(index2))))
pd.DataFrame(data={'a': df1.iloc[:, 0], 'b': df2.iloc[:, 0]})
a b
a 0.0 0.0
b 1.0 1.0
c 2.0 2.0
d 3.0 3.0
e 4.0 4.0
f NaN 5.0
g 5.0 NaN