【问题标题】:Read lists into columns of pandas DataFrame将列表读入 pandas DataFrame 的列
【发布时间】:2015-05-14 21:29:20
【问题描述】:

我想将列表加载到 pandas DataFrame 的列中,但似乎不能简单地做到这一点。这是我想要使用 transpose() 的示例,但我认为这是不必要的:

In [1]: import numpy as np
In [2]: import pandas as pd
In [3]: x = np.linspace(0,np.pi,10)
In [4]: y = np.sin(x)
In [5]: data = pd.DataFrame(data=[x,y]).transpose()
In [6]: data.columns = ['x', 'sin(x)']
In [7]: data
Out[7]: 
          x        sin(x)
0  0.000000  0.000000e+00
1  0.349066  3.420201e-01
2  0.698132  6.427876e-01
3  1.047198  8.660254e-01
4  1.396263  9.848078e-01
5  1.745329  9.848078e-01
6  2.094395  8.660254e-01
7  2.443461  6.427876e-01
8  2.792527  3.420201e-01
9  3.141593  1.224647e-16

[10 rows x 2 columns]

有没有办法在创建DataFrame时直接将每个列表加载到列中以消除转置并插入列标签?

【问题讨论】:

    标签: python list pandas


    【解决方案1】:

    有人建议从数据中创建一个字典,然后像这样将其加载到 DataFrame 中:

    In [8]: data = pd.DataFrame({'x': x, 'sin(x)': y})
    In [9]: data
    Out[9]: 
              x        sin(x)
    0  0.000000  0.000000e+00
    1  0.349066  3.420201e-01
    2  0.698132  6.427876e-01
    3  1.047198  8.660254e-01
    4  1.396263  9.848078e-01
    5  1.745329  9.848078e-01
    6  2.094395  8.660254e-01
    7  2.443461  6.427876e-01
    8  2.792527  3.420201e-01
    9  3.141593  1.224647e-16
    
    [10 rows x 2 columns]
    

    请注意,字典是一组无序的键值对。如果您关心列顺序,则应传递要使用的有序键值列表(您也可以使用此列表仅包含一些 dict 条目):

    data = pd.DataFrame({'x': x, 'sin(x)': y}, columns=['x', 'sin(x)'])
    

    【讨论】:

    • 您可以通过这种方式指定列顺序: 在 [9] 中: 在 [5] 中: data = pd.DataFrame({'x':x, 'sin(x)':y}, columns =['x','sin(x)'])
    • 您在字典初始化中缺少引号。
    • 谢谢@DashingAdamHuges,刚刚补充了
    【解决方案2】:

    这是另一个保留指定顺序的 1 行解决方案,无需输入两次 xsin(x)

    data = pd.concat([pd.Series(x,name='x'),pd.Series(y,name='sin(x)')], axis=1)
    

    【讨论】:

      猜你喜欢
      • 2016-07-02
      • 2015-01-24
      • 2013-10-07
      • 2015-03-16
      相关资源
      最近更新 更多