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

标签 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)

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

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

最佳答案

你有很多不同的方法可以做到这一点,我从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/

相关文章:

python - 动态更改 matplotlib 图的内容

python - Python 无法将 0 正确移动到列表末尾

python - 在 celery 中有错误队列

python - 根据分组日期值更新列

python - 将大型 Pandas Dataframes 分块写入 CSV 文件

python - Pandas 导入 : ModuleNotFoundError: No module named 'pandas._libs.tslib'

python - 使用 pip 的问题,(异常 [...] findall() 正好需要 2 个参数(给定 3 个)

python - 在 Python 2.7 中是否有一种通用的方法来迭代字典的集合或值?

python - Pandas 和 IPython 的变量可见性问题

python - 将 pandas 数据框中的数字替换为 `nan`