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中的所有相关值。
有什么建议可以达到预期的结果?
答案 0 :(得分:3)
如果您确定的模式是一种启发式方法,但是我很难遵循,您可以尝试使用pd.Series.ffill
和pd.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