我有三个独立的数据帧。我希望将这些合并或合并在一起。我在每个数据帧中都有一个参考值。我给它们贴上了标签ValueX, ValueY, ValueZ
。但它们没有唯一的值可以合并。但它们几乎总是包含相同数量的对应值
使用下面的df,我希望对齐ValueX, ValueY, ValueZ
上的数据帧。如果使用concat,则每个中的值基本上是对齐的。但有时会有4或6个值,而不是5个值。因此,相应的数据帧没有对齐
import pandas as pd
df1 = pd.DataFrame({
'ValueX' : [0,0,0,0,0,0,2,2,2,2,2,4,4,4,4,4],
'Item3' : ['a', 'e', 'd', 'g', 'f', 'c', 'c', 'f', 'b', 'c', 'j', 'g', 'm', 's', 'c', 'k'],
'Item4' : ['f', 's', 'h', 'k', 'f', 'd', 'c', 'g', 'b', 'k', 'j', 'n', 'r', 'd', 'x', 'd'],
})
df2 = pd.DataFrame({
'ValueY' : [1,1,1,1,1,3,3,3,3,3,3,5,5,5,5,5,5],
'Item1' : ['a', 'c', 'c', 'g', 'a', 'c', 'c', 'g', 'a', 'c', 'c', 'g', 'a', 'c', 'c', 'g', 'k'],
'Item2' : ['a', 'e', 'd', 'g', 'f', 'c', 'c', 'f', 'b', 'c', 'j', 'g', 'm', 's', 'c', 'k', 'k'],
})
df3 = pd.DataFrame({
'ValueZ' : [6,6,6,6,6,7,7,7,7,7,7,8,8,8,8,8],
'Item5' : ['a', 'e', 'd', 'g', 'f', 'c', 'c', 'f', 'b', 'c', 'j', 'g', 'm', 's', 'c', 'k'],
'Item6' : ['f', 's', 'h', 'k', 'f', 'd', 'c', 'g', 'b', 'k', 'j', 'n', 'r', 'd', 'x', 'd'],
})
final_df = pd.concat([df1, df2, df3], axis = 1)
预期产出:
ValueX Item3 Item4 ValueY Item1 Item2 ValueZ Item5 Item6
0 0.0 a f 1.0 a a 6.0 a f
1 0.0 e s 1.0 c e 6.0 e s
2 0.0 d h 1.0 c d 6.0 d h
3 0.0 g k 1.0 g g 6.0 g k
4 0.0 f f 1.0 a f 6.0 f f
5 0.0 c d NaN NaN NaN NaN NaN NaN
6 2.0 c c 3.0 c c 7.0 c d
7 2.0 f g 3.0 c c 7.0 c c
8 2.0 b b 3.0 g f 7.0 f g
9 2.0 c k 3.0 a b 7.0 b b
10 2.0 j j 3.0 c c 7.0 c k
11 NaN NaN NaN 3.0 c j 7.0 j j
12 4.0 g n 5.0 g g 8.0 g n
13 4.0 m r 5.0 a m 8.0 m r
14 4.0 s d 5.0 c s 8.0 s d
15 4.0 c x 5.0 c c 8.0 c x
16 4.0 k d 5.0 g k 8.0 k d
17 NaN NaN NaN 5.0 k k NaN NaN NaN
您可以使用
itertools.zip_longest
来对齐组:印刷品:
相关问题 更多 >
编程相关推荐