The title is a bit confusing, but I think an example would make it clear.
I have this dataframe:
Date | Info |
---|---|
27/07/2022 | This is |
NAN | an |
NAN | example |
28/07/2022 | and this |
NAN | is another one |
And this is my desired output:
Date | Info |
---|---|
27/07/2022 | This is an example |
28/07/2022 | and this is another one |
I tried few attempts with fillna(method="ffil")
but I wasn't able to come with a solution. and I can't think of anything able to solve this.
Thanks in advance!
CodePudding user response:
You can do groupby
and agg
after ffill
-ing the Date
column:
df.assign(Date=df['Date'].ffill()).groupby('Date',as_index=False).agg(' '.join)
Output:
Date Info
0 27/07/2022 This is an example
1 28/07/2022 and this is another one
CodePudding user response:
Initalize the input
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"]
})
Forward fill the dates
df.Date = df.Date.ffill()
group by date and concat string
df.Info = df.groupby(df.Date)["Info"].transform(lambda x: ' '.join(x))
Drop duplicates to get the result
df.drop_duplicates()
Result:
Date Info
0 27/07/2022 This is an example
3 28/07/2022 and this is another one