我有两个数据框,每个数据框有两列:
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)
但是,它不仅花了很长时间(我的数据中有数十万行),但它似乎没有用。
我做错了什么?为什么该方法适用于一列,而不适用于另一列?
答案 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