结合在python中由一个系列分隔的两个文本

时间:2018-09-20 09:34:19

标签: python pandas dataframe series

我正在尝试合并奇数列的文本和偶数列的文本。

样本系列

   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 :(得分:2)

您可以通过reshape设置基础numpy数组,从中构造一个新的df,然后apply一个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

答案 1 :(得分:1)

发生这种情况是因为您将它们串联在不匹配的索引上。 您要么需要重置索引,要么使用基础的numpy数组。

>>> 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

答案 2 :(得分:0)

您可以将column的值作为数组,将concat的值作为偶数和奇数索引使用:

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

    column
0   ab
1   cd