所以我想说我有一个熊猫数据框:
In [1]: import pandas as pd
...
In [4]: df
Out[3]:
Person_ID First_Name Last_Name Phone_Number Email
1 A456 John Doe None None
2 A456 John Doe 123-123-1234 john.doe@test.com
3 A890 Joe Dirt 321-321-4321 None
4 A890 Joe Dirt None joe@email.com
我想做一些改造,把它变成这个:
Person_ID First_Name Last_Name Phone_Number Email
1 A456 John Doe 123-123-1234 john.doe@test.com
2 A890 Joe Dirt 321-321-4321 joe@email.com
即。我希望能够获取一个数据框,该数据框可能具有与同一个人相对应的多行数据(并共享一个Person_ID),但在不同的地方缺少条目,并将这些条目组合在一起,包含所有信息。
重要的是,这不仅仅是过滤掉其中包含更多None
值的行的任务,例如在我的玩具示例中,第3行和第4行具有相同数量的None
但是数据填充在不同的地方。
有人会就如何做到这一点提出建议吗?
答案 0 :(得分:2)
使用方法parametrize
和ffill
然后groupby
{/ 3}} fillna
drop_duplicates
尝试stackoverflow:
bfill
答案 1 :(得分:0)
你可以
In [1571]: df.groupby('Person_ID', as_index=False).apply(
lambda x: x.ffill().bfill().iloc[0])
Out[1571]:
Person_ID First_Name Last_Name Phone_Number Email
0 A456 John Doe 123-123-1234 john.doe@test.com
1 A890 Joe Dirt 321-321-4321 joe@email.com