将列表转换为 DataFrame
Posted
技术标签:
【中文标题】将列表转换为 DataFrame【英文标题】:Convert a list into a DataFrame 【发布时间】:2022-01-07 03:57:59 【问题描述】:我需要将我的 list
转换为 3 列 pandas
DataFrame
(time
、id
和 ret_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的主要内容,如果未能解决你的问题,请参考以下文章