У меня есть кадр данных панд, как показано здесь. Все строки без значения для ["sente"]
содержат дополнительную информацию, но они еще не связаны с ["sente"]
.
id pos value sente
1 a I 21
2 b have 21
3 b a 21
4 a cat 21
5 d ! 21
6 cat N Nan
7 a My 22
8 a cat 22
9 b is 22
10 a cute 22
11 d . 22
12 cat N NaN
13 cute M NaN
Теперь я хочу, чтобы каждая строка, в которой нет значения в ["sente"]
, получала свое значение из строки выше. Затем я хочу сгруппировать их по ["sente"]
и создать новый столбец с его содержимым из строки без значения в ["sente"]
.
sente pos value content
21 a,b,b,a,d I have a cat ! 'cat,N'
22 a,a,b,a,d My cat is cute . 'cat,N','cute,M'
Это будет мой первый шаг:
df.loc[(df['sente'] != df["sente"].shift(-1) & df["sente"] == Nan) , "sente"] = df["sente"].shift(+1)
, но он работает только для одной дополнительной строки, а не для двух или более.
Это группирует один столбец так, как я хочу:
df.groupby(["sente"])['value'].apply(lambda x: " ".join()
Но для большего количества столбцов это не работает так, как я хочу:
df.groupby(["sente"]).agr(lambda x: ",".join()
Есть ли способ сделать это без использования стековых функций?