我有一个 Dataframe ,其中包含一个person
、year
和一组包含flag
的列,如下所示:
# sample dataframe
data = [["John Doe", 2018, True, False, True], ["Jane Doe", 2019, True, False, False]]
df = pd.DataFrame(data, columns=["person", "year", "flag_1", "flag_2", "flag_3"])
df
person year flag_1 flag_2 flag_3
0 John Doe 2018 True False True
1 Jane Doe 2019 True False False
我希望最终输出为groupby
,其中保留了person
和year
,并存储了一个包含所有标志结果的字典的 * new * 列。
有点像,但不太像,这个:
第一:重塑
一个二个一个一个
第二步:创建字典
reshaped_df.set_index(["person", "year", "variable"]).T.to_dict("list")
{('John Doe', 2018, 'flag_1'): [True],
('Jane Doe', 2019, 'flag_1'): [True],
('John Doe', 2018, 'flag_2'): [False],
('Jane Doe', 2019, 'flag_2'): [False],
('John Doe', 2018, 'flag_3'): [True],
('Jane Doe', 2019, 'flag_3'): [False]}
- 除外**我希望输出如下所示:
person year flag_dict
0 John Doe 2018 {'flag_1': True, 'flag_2': False, 'flag_3': True}
1 Jane Doe 2019 {'flag_1': True, 'flag_2': False, 'flag_3': False}
这可能吗?如果可能,怎么做?谢谢!
1条答案
按热度按时间xggvc2p61#
无需复杂的整形,只需使用
to_dict
即可输出: