将列表转换为 DataFrame

数据挖掘 Python 熊猫 数据框
2022-02-13 05:18:11

字典

{(8758148.0, 'CI Alpine Growth Equity Fund'): D    0.000016
 Name: 8758148.0, dtype: float64,
 (8758148.0, 'CI American Growth Fund'): D    0.0
 Name: 8758148.0, dtype: float64,
 (8758148.0, 'CI American Small Companies Fund'): D    0.0
 Name: 8758148.0, dtype: float64,
 (8758148.0, 'CI American Value Fund'): D    0.0
 Name: 8758148.0, dtype: float64,
 (8758148.0, 'CI Canadian Equity Fund'): D    0.0
 Name: 8758148.0, dtype: float64,
 (8758148.0, 'CI Canadian Investment Fund'): D    0.0
 Name: 8758148.0, dtype: float64,
 (8758148.0, 'CI Canadian Small Cap Fund'): D    0.0
 Name: 8758148.0, dtype: float64,
 (8758148.0, 'CI Canadian Small/Mid Cap Fund'): D    0.0
 Name: 8758148.0, dtype: float64,
 (8758148.0, 'CI Global Bond RSP Fund'): D    0.0
 Name: 8758148.0, dtype: float64,
 (8758148.0, 'CI Harbour Fund'): D    0.0
 Name: 8758148.0, dtype: float64 }

我需要数据框是:

id          Name                                Value 
8758148.0   CI Alpine Growth Equity Fund        0.000016

我遇到了需要将列表转换为具有特定列名称的数据框的问题

3个回答

让我们来看看。我稍微修改了字符串,以便可以将其保存为字典。

g = {(8758148.0, 'CI Alpine Growth Equity Fund'): 'D    0.000016 Name: 8758148.0, dtype: float64',
 (8758148.0, 'CI American Growth Fund'): 'D    0.0 Name: 8758148.0, dtype: float64',
 (8758148.0, 'CI American Small Companies Fund'): 'D    0.0 Name: 8758148.0, dtype: float64',
 (8758148.0, 'CI American Value Fund'): 'D    0.0 Name: 8758148.0, dtype: float64',
 (8758148.0, 'CI Canadian Equity Fund'): 'D    0.0 Name: 8758148.0, dtype: float64',
 (8758148.0, 'CI Canadian Investment Fund'): 'D    0.0 Name: 8758148.0, dtype: float64',
 (8758148.0, 'CI Canadian Small Cap Fund'): 'D    0.0 Name: 8758148.0, dtype: float64',
 (8758148.0, 'CI Canadian Small/Mid Cap Fund'): 'D    0.0 Name: 8758148.0, dtype: float64',
 (8758148.0, 'CI Global Bond RSP Fund'): 'D    0.0 Name: 8758148.0, dtype: float64',
 (8758148.0, 'CI Harbour Fund'): 'D    0.0 Name: 8758148.0, dtype: float64' }

现在这里是代码:

df = pd.DataFrame([i[0] for i in g.keys()], columns=['id'])
df['Name'] = [i[1] for i in g.keys()]
df['Value'] = [i.split()[1] for i in g.values()]
df

    id          Name                            Value
0   8758148.0   CI Alpine Growth Equity Fund    0.000016
1   8758148.0   CI American Growth Fund 0.0
2   8758148.0   CI American Small Companies Fund    0.0
3   8758148.0   CI American Value Fund  0.0
4   8758148.0   CI Canadian Equity Fund 0.0
5   8758148.0   CI Canadian Investment Fund 0.0
6   8758148.0   CI Canadian Small Cap Fund  0.0
7   8758148.0   CI Canadian Small/Mid Cap Fund  0.0
8   8758148.0   CI Global Bond RSP Fund 0.0
9   8758148.0   CI Harbour Fund 0.0

我只是要制作一个简单的示例,您可以将其修改为您自己的示例。这是一种通用方法,可用于任何类似操作。

import pandas as pd
d = {('a', 'b'): 1, ('c', 'd'): 2}
x=pd.DataFrame(d.items(),columns=['keys','value'])

def extract(x):
  (key1,key2)=x['keys']
  x['key_1']=key1
  x['key_2']=key2
  del x['keys']
  return x

x.apply(lambda x: extract(x),axis=1)

试试这个:

In [178]: pd.DataFrame([[k[0], k[1], v.split()[1]] for k,v in d.items()],
                       columns=['id','Name','Value'])
Out[178]:
          id                              Name     Value
0  8758148.0      CI Alpine Growth Equity Fund  0.000016
1  8758148.0           CI American Growth Fund       0.0
2  8758148.0  CI American Small Companies Fund       0.0
3  8758148.0            CI American Value Fund       0.0
4  8758148.0           CI Canadian Equity Fund       0.0
5  8758148.0       CI Canadian Investment Fund       0.0
6  8758148.0        CI Canadian Small Cap Fund       0.0
7  8758148.0    CI Canadian Small/Mid Cap Fund       0.0
8  8758148.0           CI Global Bond RSP Fund       0.0
9  8758148.0                   CI Harbour Fund       0.0

d你的字典在哪里