如何在pandas数据帧

时间:2017-08-09 19:25:25

标签: python pandas

所以我想说我有一个熊猫数据框:

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但是数据填充在不同的地方。

有人会就如何做到这一点提出建议吗?

2 个答案:

答案 0 :(得分:2)

使用方法parametrizeffill然后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