Python 熊猫在可能的地方把行弄平
我有一个dataframe,它根据每个ID上的信息量为某些ID输出多行,我想在可能的情况下将其展平。下面是我的数据帧的一个示例Python 熊猫在可能的地方把行弄平,python,pandas,Python,Pandas,我有一个dataframe,它根据每个ID上的信息量为某些ID输出多行,我想在可能的情况下将其展平。下面是我的数据帧的一个示例 id address city state country company title email 001 80 Fake St. San F. CA USA null null personal@gmail.com 001 null
id address city state country company title email
001 80 Fake St. San F. CA USA null null personal@gmail.com
001 null null null null Amazon CEO null
002 2 Test Ave. San F. CA USA null null test@aol.com
002 null null null null Google CEO googleceo@gmail.com
我希望001的行合并成一行,因为所有值都可以放入同一行。对于002,它们可以放在单独的行上,因为无论如何都需要有两行来存储这两封电子邮件
我试过了
df.groupby('id', squeeze=True)
这让我接近我想要的,但对于002,它复制了第一行的所有数据,并将其放在第二行。我更希望这些数据保持为null,以便在收到最终输出后,相同的数据不会被处理两次。因此,我期望的最终输出是:
id address city state country company title email
001 80 Fake St. San F. CA USA Amazon CEO personal@gmail.com
002 2 Test Ave. San F. CA USA null null test@aol.com
002 null null null null Google CEO googleceo@gmail.com
我永远不知道哪些列可以合并/展平,所以我不能基于某些列删除重复项(我不认为)。任何关于如何实现这一输出的建议都将非常好 这里我使用的是排序后的
,,因为它更容易阅读
yourdf=df.groupby('id').apply(lambda x : x.apply(lambda y: sorted(y,key=pd.isnull))).dropna(thresh=2)
yourdf
id address city state country company title email
0 1 80FakeSt. SanF. CA USA Amazon CEO personal@gmail.com
2 2 2TestAve. SaF. CA USA Google CEO test@aol.com
3 2 NaN NaN NaN NaN NaN NaN googleceo@gmail.com
如果需要速度,请检查