[Python] 在熊猫中将两个Series组合成一个DataFrame


Answers

熊猫将自动对齐这些系列并创建联合索引它们在这里碰巧是一样的。 reset_index将索引移动到一列。

In [2]: s1 = Series(randn(5),index=[1,2,4,5,6])

In [4]: s2 = Series(randn(5),index=[1,2,4,5,6])

In [8]: DataFrame(dict(s1 = s1, s2 = s2)).reset_index()
Out[8]: 
   index        s1        s2
0      1 -0.176143  0.128635
1      2 -1.286470  0.908497
2      4 -0.995881  0.528050
3      5  0.402241  0.458870
4      6  0.380457  0.072251
Question

我有两个具有相同(非连续)索引的系列s1s2 。 如何将s1s2组合成DataFrame中的两列,并将其中一个索引保留为第三列?




示例代码:

a = pd.Series([1,2,3,4], index=[7,2,8,9])
b = pd.Series([5,6,7,8], index=[7,2,8,9])
data = pd.DataFrame({'a': a,'b':b, 'idx_col':a.index})

Pandas允许您使用Series作为值和列名作为键创建一个DataFrame 。 当它找到一个Series作为一个值时,它将使用Series索引作为DataFrame索引的一部分。 这种数据对齐是熊猫的主要特点之一。 因此,除非您有其他需求,否则新创建的DataFrame具有重复价值。 在上例中, data['idx_col']data.index具有相同的数据。




不知道我完全理解你的问题,但这是你想要做什么?

pd.DataFrame(data=dict(s1=s1, s2=s2), index=s1.index)

index=s1.index在这里甚至是不必要的)