【发布时间】:2022-01-20 04:15:24
【问题描述】:
我有如下数据框
df 创建
df= pd.read_csv("dump12.csv")
df=df[['ID','linkedShipments','Status']]
df.dtypes()
ID object
linkedShipments object
Status object
df(输入数据)
ID Status linkedShipments
12 Active [{'SID': 'GBDXY551', 'Code': 'GBDXY55', 'Num': '2021121'}, {'SID': 'GBDXY551', 'Code': 'GBDXY55', 'Num': '20211215'}]
32 Expired [{'SID': 'CHSGI422', 'Code': 'CHSGI421', 'Num': '4024421'}, {'SID': 'GBDXY551', 'Code': 'GBDXY55', 'Num': '20211222'}]
36 Expired [{'SID': 'CHSGI428', 'Code': 'CHSGI907', 'Num': '4024568'}, {'SID': 'GBDXY556', 'Code': 'GBDXY55', 'Num': '20211333'}]
预期输出
ID SID Code Num Status
12 GBDXY551 GBDXY55 2021121 Active
12 GBDXY551 GBDXY55 20211215 Active
32 CHSGI422 CHSGI421 4024421 Expired
32 GBDXY551 GBDXY55 20211222 Expired
36 CHSGI428 CHSGI907 4024568 Expired
36 GBDXY556 GBDXY55 20211333 Expired
**My Current Code**
这仅适用于一个键,我还想将状态列添加到输出数据框,如何做到这一点。
#load as dataframe
df = pd.DataFrame(data)
new_data = {} #define new data
#treverse all rows in current data
for index, row in df.iterrows():
#json only accept double quotes, so convert singal quotes to double quotes
shipment_dict_list = json.loads(row['linkedShipments'].replace("\'", "\""))
for shipment_dict in shipment_dict_list:
new_data.setdefault("ID",[]).append(row['ID'])
for key in shipment_dict:
new_data.setdefault(key,[]).append(shipment_dict[key])
print(pd.DataFrame(new_data))
【问题讨论】: