Python Pandas将字符串和数字连接成一个字符串

时间:2017-05-24 20:16:13

标签: python string pandas concatenation

我正在使用pandas数据框并尝试将多个字符串和数字连接成一个字符串。

这有效

df1 = pd.DataFrame({'Col1': ['a', 'b', 'c'], 'Col2': ['a', 'b', 'c']})
df1.apply(lambda x: ', '.join(x), axis=1)

0    a, a
1    b, b
2    c, c

我怎样才能像df1一样完成这项工作?

df2 = pd.DataFrame({'Col1': ['a', 'b', 1], 'Col2': ['a', 'b', 1]})
df2.apply(lambda x: ', '.join(x), axis=1)

TypeError: ('sequence item 0: expected str instance, int found', 'occurred at index 2')

3 个答案:

答案 0 :(得分:3)

考虑数据框df

np.random.seed([3,1415])
df = pd.DataFrame(
    np.random.randint(10, size=(3, 3)),
    columns=list('abc')
)

print(df)

   a  b  c
0  0  2  7
1  3  8  7
2  0  6  8

您可以在astype(str)

之前使用lambda
df.astype(str).apply(', '.join, 1)

0    0, 2, 7
1    3, 8, 7
2    0, 6, 8
dtype: object

使用理解

pd.Series([', '.join(l) for l in df.values.astype(str).tolist()], df.index)

0    0, 2, 7
1    3, 8, 7
2    0, 6, 8
dtype: object

答案 1 :(得分:2)

In [75]: df2
Out[75]:
  Col1 Col2 Col3
0    a    a    x
1    b    b    y
2    1    1    2

In [76]: df2.astype(str).add(', ').sum(1).str[:-2]
Out[76]:
0    a, a, x
1    b, b, y
2    1, 1, 2
dtype: object

答案 2 :(得分:1)

您必须将列类型转换为字符串。

import pandas as pd
df2 = pd.DataFrame({'Col1': ['a', 'b', 1], 'Col2': ['a', 'b', 1]})
df2.apply(lambda x: ', '.join(x.astype('str')), axis=1)