Python DataFrame特定列转换

时间:2017-12-01 13:00:12

标签: python json pandas dataframe pandas-datareader

当前数据帧输出如下所示我需要另一个数据帧

1

将pandas导入为pd

df = pd.DataFrame(' c:\ data \ text.csv')

print(df)

我的输出如下:

   a b    c                                                    d         e

0  1  10 {'a1':40,'b1':60,'c1':90,'d1':100,'e1':50,'f1':75}  10000     899
1  1  65 {'a1':35,'b1':535,c1': 343,'d1':89,'e1':67,'f1':45} 90000     789

假设我的指数大约在50,000到1,00,000

之间

我试过了:

DF1 = pd.DataFrame(列表(df.c))

打印(DF1)

     a1   b1    c1   d1   e1    f1                          
     40   60    90   100  50   75             
     35   535   343  89   67   45     

然后我试了

df2 = pd.DataFrame(df.a)

df3 = pd.DataFrame(df.b)

df4 = pd.DataFrame(df.d)

df5 = pd.DataFrame(df.e)

frames = [df1,df2,df3,df4,df5]

result = pd.concat(frames)

仍然无法得到如下预期结果:

   a  b    a1  b1    c1   d1   e1    f1            d        e                
0  1  10   40  60   90   100  50   75             10000     899
1  1  65   35  535  343  89   67   45             90000      789

1 个答案:

答案 0 :(得分:0)

这是你可以做的: -

假设DataFrame的名称为df, 将dicts的每个df[c]转换为list。现在您需要解压缩此列表以添加到DataFrame。解压缩以获得适当的list并添加到df

list_abcdef = list(map(list,zip(*[[dic['a1'],dic['b1'],dic['c1'],dic['d1'],dic['e1'],dic['f1']] for dic in df['c']])))
df1 = df[['a','b']]
df1['a1'],df1['b1'],df1['c1'],df1['d1'],df1['e1'],df1['f1'] = list_abcdef
df1['d'],df1['e'] = df['d'],df['e']

df1应该是您需要的DataFrame。请知道它是否适合您。