2 回答
TA贡献1793条经验 获得超6个赞
IIUc,你可以试试concat
+ melt
:
print(pd.concat(df_list,sort=False).melt('special',var_name='name') .dropna(subset=['value'])[['name','value','special']].to_dict('records'))
[{'name': 'column1', 'value': '1', 'special': '1000'}, {'name': 'column1', 'value': '2', 'special': '2000'}, {'name': 'column1', 'value': '3', 'special': '3000'}, {'name': 'column2', 'value': '4', 'special': '1000'}, {'name': 'column2', 'value': '5', 'special': '2000'}, {'name': 'column2', 'value': '6', 'special': '3000'}, {'name': 'column3', 'value': '1', 'special': '1000'}, {'name': 'column3', 'value': '2', 'special': '2000'}, {'name': 'column3', 'value': '3', 'special': '3000'}, {'name': 'column3', 'value': '4', 'special': '4000'}, {'name': 'column4', 'value': '8', 'special': '1000'}, {'name': 'column4', 'value': '9', 'special': '2000'}, {'name': 'column4', 'value': '10', 'special': '3000'}, {'name': 'column4', 'value': '11', 'special': '4000'}, {'name': 'column5', 'value': '12', 'special': '1000'}, {'name': 'column5', 'value': '13', 'special': '2000'}, {'name': 'column5', 'value': '14', 'special': '3000'}, {'name': 'column5', 'value': '15', 'special': '4000'}]
TA贡献1865条经验 获得超7个赞
# Create an empty list
melted_df = []
# Melt all the dfs in your list into a dataframe
for dataframe in df_list:
temp = dataframe.melt(var_name="name",
id_vars=["special"],
value_name="value")
# Append the melted dfs into your list
melted_df.append(temp)
# Concatenate the dfs in the list
result = pd.concat(melted_df)
# Convert the df into dictionary
result.to_dict(orient='records')
输出:
[{'special': '1000', 'name': 'column1', 'value': '1'},
{'special': '2000', 'name': 'column1', 'value': '2'},
{'special': '3000', 'name': 'column1', 'value': '3'},
{'special': '1000', 'name': 'column2', 'value': '4'},
{'special': '2000', 'name': 'column2', 'value': '5'},
{'special': '3000', 'name': 'column2', 'value': '6'},
{'special': '1000', 'name': 'column3', 'value': '1'},
{'special': '2000', 'name': 'column3', 'value': '2'},
{'special': '3000', 'name': 'column3', 'value': '3'},
{'special': '4000', 'name': 'column3', 'value': '4'},
{'special': '1000', 'name': 'column4', 'value': '8'},
{'special': '2000', 'name': 'column4', 'value': '9'},
{'special': '3000', 'name': 'column4', 'value': '10'},
{'special': '4000', 'name': 'column4', 'value': '11'},
{'special': '1000', 'name': 'column5', 'value': '12'},
{'special': '2000', 'name': 'column5', 'value': '13'},
{'special': '3000', 'name': 'column5', 'value': '14'},
{'special': '4000', 'name': 'column5', 'value': '15'}]
添加回答
举报