У меня есть две pandas серии с текстом, к которому я хочу присоединиться, чтобы получить серию с присоединенным текстом.
Обе серии основаны на одном индексе, но одна серия имеет меньше значений, что приводит к NA значения при объединении.
Вот игрушечный пример:
import pandas as pd
s1 = pd.Series(['red', 'blue', 'green', 'black'], index=[1,2,3,4])
s2 = pd.Series(['large', 'small'], index=[1,3])
s1
1 red
2 blue
3 green
4 black
dtype: object
s2
1 large
3 small
dtype: object
Теперь я хочу объединить текст обеих серий с разделителем для получения следующих серий:
1 red,large
2 blue
3 green,small
4 black
И это то, что я пробовал до сих пор:
1.
s1.str.cat(s2, sep=',')
1 red,large
2 NaN
3 green,small
4 NaN
dtype: object
значения NaN вместо значения из первой серии
2.
s1.str.cat(s2, sep=',', na_rep='')
1 red,large
2 blue,
3 green,small
4 black,
dtype: object
Конечные запятые
3.
s1.str.cat(s2, sep=',', na_rep='').str.strip(',')
Это на самом деле работает, но делает код менее понятен, и я не хочу использовать какой-либо дополнительный код для исправления того, что должно быть сделано правильно с самого начала!
4.
pd.concat([s1,s2], axis=1).apply(','.join)
TypeError: sequence item 1: expected str instance, float found
5.
pd.concat([s1,s2], axis=1).agg('|'.join, axis=1)
TypeError: sequence item 1: expected str instance, float found
Не работает из-за значений NA.
Так как я могу получить это право?