将系列对象转换为包含索引中的列和列表中的值的数据框

问题描述 投票:0回答:2

我有一个系列对象,其中包含索引作为列名称,列的值作为列表。看起来像这样作为例子:

'A'  [100, 200, 300]
'B'  [400, 500, 600]

当然我希望数据框是:

A B
100 400
200 500
300 600

我尝试使用reset_index、to_frame或transpose,但只是得到了奇怪的扁平形状,而不是所需的表结构。我确信答案很简单,但我遗漏了一些东西!

在现实世界中,我将拥有多达 50 到 100 列和数百万行。

pandas dataframe series
2个回答
2
投票

假设输入为:

s = pd.Series({'A': [100, 200, 300],
               'B': [400, 500, 600]})

转换

to_dict
并使用
DataFrame
构造函数:

df = pd.DataFrame(s.to_dict())

或者:

df = pd.DataFrame(s.tolist(), index=s.index).T

# or
df = pd.DataFrame(zip(*s), columns=s.index)

输出:

     A    B
0  100  400
1  200  500
2  300  600

-1
投票

由于我处理从 100k 到超过 100M 行的不同数据类型和数据大小:mozway 的 zip 解决方案是最有效的:

df = pd.DataFrame(zip(*s), columns=s.index)

© www.soinside.com 2019 - 2024. All rights reserved.