您是否不认为从Series列表创建DataFrame很奇怪?

时间:2018-09-27 20:07:42

标签: python pandas dataframe series

假设我们必须进行序列化:

s1 = pd.Series('a', index=[1,2,3], name="Column One")
s2 = pd.Series('b', index=[1,2,3], name="Column Two")

从文档(here中可以看到,从大量Serires对象创建DataFrame的建议方法是使用常见的python字典构造,例如:

d = {'one' : pd.Series([1., 2., 3.], index=['a', 'b', 'c']),
     'two' : pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)

在这种情况下,我有一个合理的问题,即使它不能像以下那样用于构造中,我们需要name系列中的什么目标?

df = pd.DataFrame(s1, s2)

带有结果数据框:

     Column    Column
     one       two  
+---+---------+---------+  
| 1 |    a    |    b    |
| 2 |   ...   |   ...   |
|                       |

3 个答案:

答案 0 :(得分:1)

您可以使用字典理解,以系列名称作为键,并以系列作为值,然后形成一个数据框:

输入:

d = {s.name: s for s in [s1,s2]}
df = pd.DataFrame(d)

输出:

  Column One Column Two
1          a          b
2          a          b
3          a          b

答案 1 :(得分:0)

转置您的数据框。

df=df.T

完成

答案 2 :(得分:0)

从系列列表创建数据框的一种更简洁的方法是通过pd.concat沿axis=1,即列。这将对您的输入列表中的每个系列使用name属性:

s1 = pd.Series('a', index=[1,2,3], name="Column One")
s2 = pd.Series('b', index=[1,2,3], name="Column Two")

df = pd.concat([s1, s2], axis=1)

print(df)

  Column One Column Two
1          a          b
2          a          b
3          a          b