根据列中的特定标签转发填充pandas数据帧

时间:2016-04-19 23:54:48

标签: python pandas

我需要转发特定标签内的数据(其他栏中定义的标签:

LABEL | Col1 | ffil_col |
-------------------------
    1 |  N   | female   |
    1 |  M   |          |
    2 |  A   |          |
    2 |  N   | male     |
    2 |  M   |          |

需要这样:

LABEL | Col1 | ffil_col |
-------------------------
    1 |  N   | female   |
    1 |  M   | female   |
    2 |  A   |          |
    2 |  N   | male     |
    2 |  M   | male     |

我到目前为止唯一的想法是按标签使用groupby,然后按每个组使用ffill, 然后把所有东西都拿回来。有没有替代方案和更明确的解决方案?

1 个答案:

答案 0 :(得分:2)

您可以在groupby上使用transform,它保留与原始数据帧相同的长度。

df['ffil_col'] = df.groupby('LABEL').ffil_col.transform(lambda group: group.ffill())

>>> df
   LABEL Col1 ffil_col
0      1    N   female
1      1    M   female
2      2    A      NaN
3      2    N     male
4      2    M     male