pandas 数据框包含列表
pandas dataframe contain list
假设我有这样一个数据框:
lst1 = [[1,3,4,5],[1,2,3,3],[2,3,4,5],[3,4,5,5]]
lst2 = [[1,2,3,1],[1,4,1,2],[3,3,1,5],[2,4,1,5]]
lst3 = [[1,2,3,3],[3,2,1,2],[1,3,1,4],[2,4,3,5]]
percentile_list = pd.DataFrame({'lst1Tite' : lst1,
'lst2Tite' : lst2,
'lst3Tite':lst3
})
> precentile_list
lst1Tite lst2Tite lst3Tite
0 [1, 3, 4, 5] [1, 2, 3, 1] [1, 2, 3, 3]
1 [1, 2, 3, 3] [1, 4, 1, 2] [3, 2, 1, 2]
2 [2, 3, 4, 5] [3, 3, 1, 5] [1, 3, 1, 4]
3 [3, 4, 5, 5] [2, 4, 1, 5] [2, 4, 3, 5]
现在我想提取第 0 行,并将第 0 行转换为这样的数据框:
> percentile_0
col1 col2 col3 col4
0 1 3 4 5
1 1 2 3 1
2 1 2 3 3
我该怎么做?
如果我想将 precentile_list 转换为像 percentile_0 这样的数据框怎么办?
您可以使用 apply
并在行上应用 Series
构造函数:
In [17]:
percentile_list.iloc[0].apply(pd.Series)
Out[17]:
0 1 2 3
lst1Tite 1 3 4 5
lst2Tite 1 2 3 1
lst3Tite 1 2 3 3
如果您特别喜欢所需的输出:
In [20]:
pd.DataFrame(percentile_list.iloc[0].apply(pd.Series).values, columns = ['col1','col2','col3','col4'])
Out[20]:
col1 col2 col3 col4
0 1 3 4 5
1 1 2 3 1
2 1 2 3 3
您可以将每个 df 存储在一个字典中,并使用您想要的名称命名:
In [41]:
d={}
for l in percentile_list.index:
d['percentile_' + str(l)] = pd.DataFrame(percentile_list.loc[l].apply(pd.Series).values, columns = ['col1','col2','col3','col4'])
d
Out[41]:
{'percentile_0': col1 col2 col3 col4
0 1 3 4 5
1 1 2 3 1
2 1 2 3 3, 'percentile_1': col1 col2 col3 col4
0 1 2 3 3
1 1 4 1 2
2 3 2 1 2, 'percentile_2': col1 col2 col3 col4
0 2 3 4 5
1 3 3 1 5
2 1 3 1 4, 'percentile_3': col1 col2 col3 col4
0 3 4 5 5
1 2 4 1 5
2 2 4 3 5}
这是第一个键:
In [42]:
d['percentile_0']
Out[42]:
col1 col2 col3 col4
0 1 3 4 5
1 1 2 3 1
2 1 2 3 3
假设我有这样一个数据框:
lst1 = [[1,3,4,5],[1,2,3,3],[2,3,4,5],[3,4,5,5]]
lst2 = [[1,2,3,1],[1,4,1,2],[3,3,1,5],[2,4,1,5]]
lst3 = [[1,2,3,3],[3,2,1,2],[1,3,1,4],[2,4,3,5]]
percentile_list = pd.DataFrame({'lst1Tite' : lst1,
'lst2Tite' : lst2,
'lst3Tite':lst3
})
> precentile_list
lst1Tite lst2Tite lst3Tite
0 [1, 3, 4, 5] [1, 2, 3, 1] [1, 2, 3, 3]
1 [1, 2, 3, 3] [1, 4, 1, 2] [3, 2, 1, 2]
2 [2, 3, 4, 5] [3, 3, 1, 5] [1, 3, 1, 4]
3 [3, 4, 5, 5] [2, 4, 1, 5] [2, 4, 3, 5]
现在我想提取第 0 行,并将第 0 行转换为这样的数据框:
> percentile_0
col1 col2 col3 col4
0 1 3 4 5
1 1 2 3 1
2 1 2 3 3
我该怎么做?
如果我想将 precentile_list 转换为像 percentile_0 这样的数据框怎么办?
您可以使用 apply
并在行上应用 Series
构造函数:
In [17]:
percentile_list.iloc[0].apply(pd.Series)
Out[17]:
0 1 2 3
lst1Tite 1 3 4 5
lst2Tite 1 2 3 1
lst3Tite 1 2 3 3
如果您特别喜欢所需的输出:
In [20]:
pd.DataFrame(percentile_list.iloc[0].apply(pd.Series).values, columns = ['col1','col2','col3','col4'])
Out[20]:
col1 col2 col3 col4
0 1 3 4 5
1 1 2 3 1
2 1 2 3 3
您可以将每个 df 存储在一个字典中,并使用您想要的名称命名:
In [41]:
d={}
for l in percentile_list.index:
d['percentile_' + str(l)] = pd.DataFrame(percentile_list.loc[l].apply(pd.Series).values, columns = ['col1','col2','col3','col4'])
d
Out[41]:
{'percentile_0': col1 col2 col3 col4
0 1 3 4 5
1 1 2 3 1
2 1 2 3 3, 'percentile_1': col1 col2 col3 col4
0 1 2 3 3
1 1 4 1 2
2 3 2 1 2, 'percentile_2': col1 col2 col3 col4
0 2 3 4 5
1 3 3 1 5
2 1 3 1 4, 'percentile_3': col1 col2 col3 col4
0 3 4 5 5
1 2 4 1 5
2 2 4 3 5}
这是第一个键:
In [42]:
d['percentile_0']
Out[42]:
col1 col2 col3 col4
0 1 3 4 5
1 1 2 3 1
2 1 2 3 3