我有一个看起来像这样的Pandas DataFrame(当前没有内置行索引以外的索引,但是如果将索引添加到“ Person”和“ Car”更容易的话,也可以):
before = pd.DataFrame({
'Email': ['[email protected]','[email protected]','[email protected]','[email protected]','[email protected]'],
'Person': ['John','Mary','Jane','John','Mary'],
'Car': ['Ford','Toyota','Nissan','Nissan','Ford']
})
我想将其重塑为如下所示:
after = pd.DataFrame({
'Person': ['John','Mary','Jane'],
'Email': ['[email protected]','[email protected]','[email protected]'],
'Ford': [True,True,False],
'Nissan': [True,False,True],
'Toyota': [False,True,False]
})
请注意,约翰既拥有福特和日产汽车,玛丽拥有福特和日产汽车,而保罗则坚持他可信赖的日产汽车。
我已经尝试过各种不同的排列方式,包括堆叠多索引的DataFrame,分组,透视-我似乎无法弄清楚如何从“ Car”列中获取值并将其转置为值为“ True”的新列。 ”,例如通过名字将人们合并在一起。
不知道这是否是执行此操作的最佳方法,但是一种方法是-
In [26]: before.pivot_table(index=['Email','Person'],columns=['Car'], aggfunc=lambda x: True).fillna(False).reset_index()
Out[26]:
Car Email Person Ford Nissan Toyota
0 [email protected] Jane False True False
1 [email protected] John True True False
2 [email protected] Mary True False True
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句