我有一只Pandas ,看起来像:
import pandas as pd
print(pd.__version__)
df0 = pd.DataFrame([
[12, None, [{'dst': '925', 'object': 'Lok. Certification', 'admin': 'valid'},
{'dst': '935', 'object': 'Lok. Administration', 'admin': 'true'},
{'dst': '944', 'object': 'Lok. Customer', 'admin': 'false'},
{'dst': '945', 'object': 'Lok. Customer', 'admin': 'false'},
{'dst': '954', 'object': 'Lok. Certification-C', 'admin': 'invalid'},
{'dst': '956', 'object': 'Lok. Certification', 'admin': 'valid'}]],
[13,'wXB', [{'dst': '986', 'object': 'Fral_heater', 'admin': 'valid'},
{'dst': '987', 'object': 'Fral_cond.', 'admin': 'valid'}]],
])
第2列中的每个列表都有完全相同的键(dst
、object
和admin
).
df0
的每一行可以有0(空[]
)到[]
个列表.
我希望我能让df0
数据帧看起来像这样:
columns = ['id', 'name', 'dst', 'object', 'admin']
df_wanted
Out[416]:
id name dst object admin
12 None 925 'Lok. Certification' 'valid'
12 None 935 'Lok. Administration' 'true'
12 None 944 'Lok. Customer' 'false'
12 None 945 'Lok. Customer' 'false'
12 None 955 'Lok. Certification-C' 'invalid'
12 None 956 'Lok. Certification' 'valid'
13 wXB 987 'Lok. Fral_heater' 'valid'
13 wXB 986 'Lok. Fral_cond.' 'valid'
...
请注意,前两列id
和name
沿行复制,以适应其列表中的元素数量.
(必须在末端使用.astype(int)
将dst
柱铸造成int
.)
我怎样才能做到这一点?
信息:
Python 3.10.4
pd.__version__
'1.4.2'