我有一个dataframe,它是这样的:
Col1 | Col2 | Col1 | Col3 | Col1 | Col4
a | d | | h | a | p
b | e | b | i | b | l
| l | a | l | | a
l | r | l | a | l | x
a | i | a | w | | i
| c | | i | r | c
d | o | d | e | d | o
Col1在dataframe中重复多次。在每个Col1中,都有缺失的信息。我需要创建一个新列,其中包含来自每个Col1事件的所有信息。 我如何用完整的信息创建一个列,然后删除之前重复的列? 多个列中可能缺少某些信息。这个脚本还将在将来可能有一个、三个、五个或任意数量的重复Col1列时使用。 期望的输出是这样的:
Col2 | Col3 | Col4 | Col5
d | h | p | a
e | i | l | b
l | l | a | a
r | a | x | l
i | w | i | a
c | i | c | r
o | e | o | d
我一直在寻找这个问题,但它是不清楚,我可以保持所需的Col1与完整的价值观。我可以删除相同名称的多个列,但我需要首先创建一个包含完整信息的列。 问题来源StackOverflow 地址:/questions/59384284/pandas-move-multiple-columns-with-the-same-name-and-different-missing-data-int
首先用下面的nan替换列中的空值:
import numpy as np
df = df.replace(r'^\s*$', np.nan, regex=True)
然后,可以使用groupby和first()
df.groupby(level = 0, axis = 1).first()
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。