我有两个数据框,每个数据框有两列:
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)
但是,它不仅花费了很长时间(我的数据中有数十万行),而且似乎不起作用。
我做错了什么?为什么该方法适用于一列,但不适用于另一列?
最佳答案
你有很多不同的方法可以做到这一点,我从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
关于Python Pandas - 在列之间连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46946042/