将列表转换为 DataFrame

Posted

技术标签:

【中文标题】将列表转换为 DataFrame【英文标题】:Convert a list into a DataFrame 【发布时间】:2022-01-07 03:57:59 【问题描述】:

我需要将我的 list 转换为 3 列 pandas DataFrametimeidret_exc_lead1m)。

然而它看起来像这样:

 [time        id            
 2010-01     comp_001661_01W   -0.041371
             comp_002410_04W   -0.053836
             comp_004367_02W    0.024752
             comp_004439_08W    0.013136
             comp_011749_09W   -0.013695
             comp_011925_01W    0.043677
 2010-02     comp_001661_01W   -0.041371
             comp_012384_14W   -0.014593
             comp_013498_01W    0.060748
             comp_015321_02W   -0.053604
             comp_015334_02W   -0.155894
 2010-03     comp_001661_01W   -0.041371
             comp_015532_10W    0.003835
             comp_015575_01W   -0.045820
             comp_015576_01W    0.032070
             comp_015598_03W    0.028164
             comp_015617_02W   -0.053060
             comp_015634_05W    0.102842
             comp_018636_04W   -0.029271
 2010-04     comp_001661_01W   -0.041371
             comp_019349_01W   -0.048753
             comp_019565_13W   -0.007516
             comp_025648_05W   -0.015128
             comp_029097_01W    0.085202
             comp_029804_04W   -0.011097
 2010-05     comp_001661_01W   -0.041371
             comp_030807_03W   -0.139678
             comp_031137_03W   -0.042764
             comp_031142_05W    0.055970
             comp_062806_93W   -0.104863
             comp_063914_02W    0.044195
             comp_063987_91W   -0.010617
 2010-06     comp_001661_01W   -0.041371
             comp_064835_03W    0.020164
             comp_064835_90W    0.047719
             comp_065248_07W   -0.045530
  Name: ret_exc_lead1m, dtype: float32]

我想知道是否有办法做到这一点。

【问题讨论】:

你的list的格式是什么?在尝试转换之前它的结构如何? 这无论如何都不是符合 python 的列表格式。 minimal reproducible example 请联系How to Ask。 @PatrickArtner:它确实是一个列表,但包含一个熊猫系列作为单个元素...... 【参考方案1】:

这取决于您的输入列表的维度。基本上,如果您的列表只有一维,那么转换将如下所示:

import pandas as pd 
your_list= ['a', 'few', 'important', 'words']
df = pd.DataFrame(lst) 
print(df) 

输出:

   0
0  a
1  few
2  important
3  words

如果列表结构良好且具有 2 维或更多维,则可以直接指向所需的列:

import pandas as pd 
lst = [['dog', 'black', 1], ['cat', 'grey', 15], ['monkey', 'brown', 2]] 
df = pd.DataFrame(lst, columns =['Animal', 'Color', 'Quantity'], dtype = float) 
print(df) 

结果:

   Animal  Color  Quantity
0     dog  black       1.0
1     cat   grey      15.0
2  monkey  brown       2.0

在这种情况下,如果您有几个 1d 列表,则可以使用 zip() 函数:

import pandas as pd 
l_1 = ['first', 'second', 'third', 'fourth']
l_2 = [1, 2, 3, 4] 
df = pd.DataFrame(list(zip(l_1, l_2)), columns =['First Column', 'Second Column']) 
print(df) 

输出:

  First Column  Second Column
0        first              1
1       second              2
2        third              3
3       fourth              4

【讨论】:

【参考方案2】:

我假设您的列表实际上包含一个单一元素,即 Pandas 系列。你只需要:

从列表中提取唯一元素 重置系列索引

代码很简单(假设您的列表是l):

l[0].reset_index()

它应该给出:

       time               id  ret_exc_lead1m
0   2010-01  comp_001661_01W       -0.041371
1   2010-01  comp_002410_04W       -0.053836
2   2010-01  comp_004367_02W        0.024752
3   2010-01  comp_004439_08W        0.013136
4   2010-01  comp_011749_09W       -0.013695
5   2010-01  comp_011925_01W        0.043677
6   2010-02  comp_001661_01W       -0.041371
7   2010-02  comp_012384_14W       -0.014593
8   2010-02  comp_013498_01W        0.060748
9   2010-02  comp_015321_02W       -0.053604
10  2010-02  comp_015334_02W       -0.155894
11  2010-03  comp_001661_01W       -0.041371
12  2010-03  comp_015532_10W        0.003835
13  2010-03  comp_015575_01W       -0.045820
14  2010-03  comp_015576_01W        0.032070
15  2010-03  comp_015598_03W        0.028164
16  2010-03  comp_015617_02W       -0.053060
17  2010-03  comp_015634_05W        0.102842
18  2010-03  comp_018636_04W       -0.029271
19  2010-04  comp_001661_01W       -0.041371
20  2010-04  comp_019349_01W       -0.048753
21  2010-04  comp_019565_13W       -0.007516
22  2010-04  comp_025648_05W       -0.015128
23  2010-04  comp_029097_01W        0.085202
24  2010-04  comp_029804_04W       -0.011097
25  2010-05  comp_001661_01W       -0.041371
26  2010-05  comp_030807_03W       -0.139678
27  2010-05  comp_031137_03W       -0.042764
28  2010-05  comp_031142_05W        0.055970
29  2010-05  comp_062806_93W       -0.104863
30  2010-05  comp_063914_02W        0.044195
31  2010-05  comp_063987_91W       -0.010617
32  2010-06  comp_001661_01W       -0.041371
33  2010-06  comp_064835_03W        0.020164
34  2010-06  comp_064835_90W        0.047719
35  2010-06  comp_065248_07W       -0.045530

【讨论】:

以上是关于将列表转换为 DataFrame的主要内容,如果未能解决你的问题,请参考以下文章

将列表转换为链接列表

将字符串列表转换为整数列表[重复]

将浮点列表列表转换为一个列表[重复]

如何将列表转换为数据表[重复]

将每行从整数列表转换为整数数组?

如何将列表列表转换为数据框?(熊猫)