Python Pandas - 在列之间连接字符串

时间:2017-10-26 04:48:30

标签: python pandas

我有两个数据框,每个数据框有两列:

DF1:

    C1  C2
0    x   a
1    y   b
2    z   c

DF2:

    C1  C2
0    q   s
1    r   u
2    t   v

我想制作连接两列的第三列。我想制作第三个数据帧:

D3:

    C1  C2
0    q  as
1    r  bu
2    t  cv

为此,我使用过:d3 ['C2'] = d1 ['C2'] + d2 ['C2']。这似乎适用于我的一个列,以及我创建的一些虚拟数据。但是,对于其他一些列(具有完全相同的数据),它似乎不起作用。相反,我d2 ['C2']似乎覆盖d3 ['C2'],我看到的只是该列中的d2 ['C2']数据。

我尝试过类似的事情:

df.apply(lambda x:'%s is %s' % (x['bar'],x['foo']),axis=1)

但是,它不仅花了很长时间(我的数据中有数十万行),但它似乎没有用。

我做错了什么?为什么该方法适用于一列,而不适用于另一列?

1 个答案:

答案 0 :(得分:1)

你有很多不同的方法可以做到这一点,我从the answers here采取了最快的方法并尝试了这个例子,似乎工作正常。

我认为你的d3['C2'] = d1['C2'] + d2['C2']唯一的问题是,数据不是字符串类型,所以你需要使用.astype(str)函数将数据强制转换为正确的类型。

A = pd.DataFrame({'C1':['x','y','z'],'C2':['a','b','c']})
B = pd.DataFrame({'C1':['q','r','t'],'C2':['s','u','v']})
C = B.copy()
C['C2'] = A['C2'].astype(str)+C['C2'].astype(str)
print C
  C1  C2
0  x  as
1  y  bu
2  z  cv