i want to have DF below from 3 columns to 1 column and convert the remaining to a dict
Library TaskName Number
Group 1 A 1
Group 2 B 2
Group 3 C 3
Group 4 D 4
Group 5 A 5
Group 6 B 6
Group 7 C 7
to this kind:
Library Dict
Group 1 {"TaskName":"A","Number":"1"}
Group 2 {"TaskName":"B","Number":"2"}
Group 3 {"TaskName":"C","Number":"3"}
Group 4 {"TaskName":"D","Number":"4"}
Group 5 {"TaskName":"A","Number":"5"}
Group 6 {"TaskName":"B","Number":"6"}
Group 7 {"TaskName":"C","Number":"7"}
CodePudding user response:
Let us do
df['dict_col'] = df[['TaskName','Number']].apply(lambda x : x.to_dict(),axis=1)
df
Out[462]:
Library TaskName Number dict_col
0 Group1 A 1 {'TaskName': 'A', 'Number': 1}
1 Group2 B 2 {'TaskName': 'B', 'Number': 2}
2 Group3 C 3 {'TaskName': 'C', 'Number': 3}
3 Group4 D 4 {'TaskName': 'D', 'Number': 4}
4 Group5 A 5 {'TaskName': 'A', 'Number': 5}
5 Group6 B 6 {'TaskName': 'B', 'Number': 6}
6 Group7 C 7 {'TaskName': 'C', 'Number': 7}
CodePudding user response:
You can do:
import json
df['Dict'] = json.loads(df[['TaskName', 'Number']].to_json(orient='records'))
df = df.filter(['Library', 'Dict'])
output:
Library Dict
0 Group 1 {'TaskName': 'A', 'Number': 1}
1 Group 2 {'TaskName': 'B', 'Number': 2}
2 Group 3 {'TaskName': 'C', 'Number': 3}
3 Group 4 {'TaskName': 'D', 'Number': 4}
4 Group 5 {'TaskName': 'A', 'Number': 5}
5 Group 6 {'TaskName': 'B', 'Number': 6}
6 Group 7 {'TaskName': 'C', 'Number': 7}
CodePudding user response:
You could select the columns you want, and then transform to dict in a record orient:
df['dict_col'] = df[['TaskName', 'Number']].to_dict('records')
df
Library TaskName Number dict_col
0 Group 1 A 1 {'TaskName': 'A', 'Number': 1}
1 Group 2 B 2 {'TaskName': 'B', 'Number': 2}
2 Group 3 C 3 {'TaskName': 'C', 'Number': 3}
3 Group 4 D 4 {'TaskName': 'D', 'Number': 4}
4 Group 5 A 5 {'TaskName': 'A', 'Number': 5}
5 Group 6 B 6 {'TaskName': 'B', 'Number': 6}
6 Group 7 C 7 {'TaskName': 'C', 'Number': 7}