объединить два текста, разделенных одной серией в Python - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь объединить текст нечетных столбцов и текст четных столбцов.

образец серии

   column
0   a
1   b
2   c
3   d

, и я хочу этот вывод

   column
0   ab
1   cd

Я пытался

new_df['new'] = df['column'][::2].map(str) + df['column'][1::2]

, но он возвращает

   new
0   NaN
1   NaN
2   NaN
3   NaN
4   NaN

Кто-нибудь может мне помочь?

Ответы [ 3 ]

0 голосов
/ 20 сентября 2018

Вы можете сделать это, reshape используя базовый массив numpy, создав из него новый df, а затем apply a str join:

In[14]:
pd.DataFrame(df['column'].values.reshape((2,-1))).apply(''.join, axis=1)

Out[14]: 
0    ab
1    cd
dtype: object

Немного более непонятно послеизменение формы на sum построчно, что объединит строки:

In[15]:
pd.DataFrame(df['column'].values.reshape((2,-1))).sum(axis=1)

Out[15]: 
0    ab
1    cd
dtype: object
0 голосов
/ 20 сентября 2018

Вы можете сделать это, используя значения column в виде массива и concat для четных и нечетных индексов как:

a = df.column.values
pd.DataFrame(a[::2]+a[1::2],columns=['column'])

    column
0   ab
1   cd
0 голосов
/ 20 сентября 2018

Это происходит потому, что вы объединяете их по индексам, которые не совпадают.Вам нужно либо сбросить индексы, либо использовать базовые массивы.

>>> df['column'][::2].values + df['column'][1::2].values

array(['ab', 'cd'], dtype=object)

>>> df['column'][::2].reset_index(drop=True) + df['column'][1::2].reset_index(drop=True)
0    ab
1    cd
Name: column, dtype: object
...