import pandas as pd
inp = [{'c1':10,'cols':{'c2':20,'c3':'str1'}, 'c4':'41'}, {'c1':11,'cols':{'c2':20,'c3':'str2'},'c4':'42'}, {'c1':12,'cols':{'c2':20,'c3':'str3'},'c4':'43'}]
df = pd.DataFrame(inp)
print (df)
df
是:
c1 c4 cols
0 10 41 {'c2': 20, 'c3': 'str1'}
1 11 42 {'c2': 20, 'c3': 'str2'}
2 12 43 {'c2': 20, 'c3': 'str3'}
cols
列是JSON类型。
我需要将cols
列设为json_decode
,这意味着将df
更改为:
c1 c4 c2 c3
0 10 41 20 str1
1 11 42 20 str2
2 12 43 20 str3
该怎么做?
预先感谢!
答案 0 :(得分:2)
y
输出
Matrix
如果您有setPolyToPoly
,请使用Matrix.scaleM(modelMatrix, 0, -1F, 1F, 1F);
pd.io.json.json_normalize(inp)
答案 1 :(得分:1)
使用DataFrame.pop
提取列,转换为numpy数组和列表,并传递给DataFrame构造函数,最后DataFrame.join
原始:
df = df.join(pd.DataFrame(df.pop('cols').values.tolist(), index=df.index))
print (df)
c1 c4 c2 c3
0 10 41 20 str1
1 11 42 20 str2
2 12 43 20 str3
答案 2 :(得分:0)
您可以使用:
df = df.join(pd.DataFrame.from_dict(df['cols'].tolist()))
df.drop('cols', axis=1, inplace=True)
print(df)
输出:
c1 c4 c2 c3
0 10 41 20 str1
1 11 42 20 str2
2 12 43 20 str3