使用字典理解
pop
用于提取原始列和
concat
对于
MulltiIndex
df = pd.concat({k: pd.DataFrame(array) for k, array in mydf.pop('colArray').items()})
keys
:
df = pd.concat([pd.DataFrame(array) for array in mydf.pop('colArray')], keys=mydf.index)
join
DataFrame
:
df = df.reset_index(level=1, drop=True).join(mydf).reset_index(drop=True)
样品
mydf = pd.DataFrame({'id': ['foo', 'bar', 'fooz', 'barz'], 'colA': ['a1', 'a2', 'a3', 'a4'], 'colB': ['b1', 'b2', 'b3', 'b4'], 'colArray': [[{'date': 's', 'data1': 't', 'data2': 0.1}, {'date': 'd', 'data1': 'r', 'data2': 0.8}], [{'date': 'd', 'data1': 'y', 'data2': 0.1}], [{'date': 'g', 'data1': 'u', 'data2': 0.1}], [{'date': 'h', 'data1': 'i', 'data2': 0.1}]]})
print (mydf)
id colA colB colArray
0 foo a1 b1 [{'date': 's', 'data1': 't', 'data2': 0.1}, {'...
1 bar a2 b2 [{'date': 'd', 'data1': 'y', 'data2': 0.1}]
2 fooz a3 b3 [{'date': 'g', 'data1': 'u', 'data2': 0.1}]
3 barz a4 b4 [{'date': 'h', 'data1': 'i', 'data2': 0.1}]
df = pd.concat({k: pd.DataFrame(array) for k, array in mydf.pop('colArray').items()})
print (df)
data1 data2 date
0 0 t 0.1 s
1 r 0.8 d
1 0 y 0.1 d
2 0 u 0.1 g
3 0 i 0.1 h
df = df.reset_index(level=1, drop=True).join(mydf).reset_index(drop=True)
print (df)
data1 data2 date id colA colB
0 t 0.1 s foo a1 b1
1 r 0.8 d foo a1 b1
2 y 0.1 d bar a2 b2
3 u 0.1 g fooz a3 b3
4 i 0.1 h barz a4 b4