行值等于行值本身加上后面的行,直到另一列的下一个非null值



标题有点令人困惑,但我认为一个例子会让它变得清楚。

我有这个数据帧:

信息
日期
2022年7月27日 这是
NAN an
NAN 示例
2022年7月28日 和这个
NAN 是另一个

您可以在ffill之后对Date列执行groupbyagg

df.assign(Date=df['Date'].ffill()).groupby('Date',as_index=False).agg(' '.join)

输出:

Date                     Info
0  27/07/2022       This is an example
1  28/07/2022  and this is another one

初始化输入

df = pd.DataFrame({
"Date": ["27/07/2022", np.NaN, np.NaN, "28/07/2022", np.NaN],
"Info": ["This is", "an", "example", "and this", "is another one"]
})

提前填写日期

df.Date = df.Date.ffill()

按日期分组并连接字符串

df.Info = df.groupby(df.Date)["Info"].transform(lambda x: ' '.join(x))

删除重复项以获得结果

df.drop_duplicates()

结果:

Date                     Info
0  27/07/2022       This is an example
3  28/07/2022  and this is another one

最新更新