首页 > 解决方案 > Create a column which elements are dictionaries which values are based in another columns of the dataframe

问题描述

I want to create a column (ColumnE in the table below) in which each element is a dictionary that contains the information of the previous 4 columns

df = pd.DataFrame(data={'TestA_complete': ["No", "No","Yes"],'TestA_incomplete': ["No", "Yes","No"],  'TestB_complete': ["Yes", "Yes","No"], 'TestB_incomplete': ["No", "No","No"], 
                        'ColumnE': [{"TestA_com":"No","TestA_inc":"No","TestB_com":"Yes","TestB_inc":"No"}, {"TestA_com":"No","TestA_inc":"Yes","TestB_com":"Yes","TestB_inc":"No"},
                                                                                                            {"TestA_com":"Yes","TestA_inc":"No","TestB_com":"No","TestB_inc":"No"}]})
|    | TestA_complete   | TestA_incomplete   | TestB_complete   | TestB_incomplete   | ColumnE                                                                        |
|---:|:-----------------|:-------------------|:-----------------|:-------------------|:-------------------------------------------------------------------------------|
|  0 | No               | No                 | Yes              | No                 | {'TestA_com': 'No', 'TestA_inc': 'No', 'TestB_com': 'Yes', 'TestB_inc': 'No'}  |
|  1 | No               | Yes                | Yes              | No                 | {'TestA_com': 'No', 'TestA_inc': 'Yes', 'TestB_com': 'Yes', 'TestB_inc': 'No'} |
|  2 | Yes              | No                 | No               | No                 | {'TestA_com': 'Yes', 'TestA_inc': 'No', 'TestB_com': 'No', 'TestB_inc': 'No'}  |

Thank you very much in advance

标签: pythonpandasdataframe

解决方案


IIUC,

df['ColumnE'] = df.apply(lambda x: x.to_dict(), axis=1)

Or

df['E'] = df.to_dict(orient='records')

Output (this output includes both ways):

  TestA_complete TestA_incomplete TestB_complete TestB_incomplete                                                                                                 ColumnE                                                                                                       E
0             No               No            Yes               No   {'TestA_complete': 'No', 'TestA_incomplete': 'No', 'TestB_complete': 'Yes', 'TestB_incomplete': 'No'}   {'TestA_complete': 'No', 'TestA_incomplete': 'No', 'TestB_complete': 'Yes', 'TestB_incomplete': 'No'}
1             No              Yes            Yes               No  {'TestA_complete': 'No', 'TestA_incomplete': 'Yes', 'TestB_complete': 'Yes', 'TestB_incomplete': 'No'}  {'TestA_complete': 'No', 'TestA_incomplete': 'Yes', 'TestB_complete': 'Yes', 'TestB_incomplete': 'No'}
2            Yes               No             No               No   {'TestA_complete': 'Yes', 'TestA_incomplete': 'No', 'TestB_complete': 'No', 'TestB_incomplete': 'No'}   {'TestA_complete': 'Yes', 'TestA_incomplete': 'No', 'TestB_complete': 'No', 'TestB_incomplete': 'No'}

推荐阅读