使用布尔逻辑来清理熊猫中的DF

时间:2018-06-21 10:06:57

标签: python pandas boolean series

df

shape   square
shape   circle
animal   NaN
NaN dog
NaN cat
NaN fish
color   red
color   blue

desired_df

shape   square
shape   circle
animal  dog
animal  cat
animal  fish
color   red
color   blue

我有一个df,其中包含需要规范化的信息。

我注意到一种模式,该模式指示如何连接列和规范化数据。

如果在Col1中== NaN和Col2 == NaN,然后​​直接在下一行Col1 == NaN和Col2!= NaN中,则应该将Col1和Col2中的值连接起来。这一直持续到到达包含值Col1!= NaN和Col2!= NaN的行为止

pandas中有解决此问题的方法吗?

我想到的第一步是创建一个包含True / False值的附加列,以确定要连接的列,但是,一旦这样做,我不确定如何在Col1中分配值到Col2中的所有相关值。

有什么建议可以达到预期的结果?

1 个答案:

答案 0 :(得分:3)

如果您确定的模式是一种启发式方法,但是我很难遵循,您可以尝试使用pd.Series.ffillpd.Series.bfill来达到所需的结果:

df[0] = df[0].ffill()
df[1] = df[1].bfill()

然后删除重复项:

df = df.drop_duplicates()

print(df)

        0       1
0   shape  square
1   shape  circle
2  animal     dog
4  animal     cat
5  animal    fish
6   color     red
7   color    blue