Pandas 使用 pd.eval 连接列
Pandas concatenate columns using pd.eval
是否可以像下面的示例那样使用 pd.eval
将列连接在一起?我一直收到 TypeError: unsupported operand type(s) for +: 'object' and '<class 'str'>'
.
import pandas as pd
df = pd.DataFrame([{'a': 1, 'b': 'x'}, {'a': 2, 'b': 'y'}])
df['a'].astype('str') + '_' + df['b']
# 0 1_x
# 1 2_y
# dtype: object
pd.eval("df['a'].astype('str') + '_' + df['b']")
# TypeError: unsupported operand type(s) for +: 'object' and '<class 'str'>'
eval
支持 Series 和 DataFrame 对象,因此您可以使用以下解决方法:
pd.eval("df.a.astype('str') + df.assign(underline='_').underline + df.b")
结果:
0 1_x
1 2_y
dtype: object
(我并不是说这是一个合理的方法,只是试图回答这个特定的问题)
是否可以像下面的示例那样使用 pd.eval
将列连接在一起?我一直收到 TypeError: unsupported operand type(s) for +: 'object' and '<class 'str'>'
.
import pandas as pd
df = pd.DataFrame([{'a': 1, 'b': 'x'}, {'a': 2, 'b': 'y'}])
df['a'].astype('str') + '_' + df['b']
# 0 1_x
# 1 2_y
# dtype: object
pd.eval("df['a'].astype('str') + '_' + df['b']")
# TypeError: unsupported operand type(s) for +: 'object' and '<class 'str'>'
eval
支持 Series 和 DataFrame 对象,因此您可以使用以下解决方法:
pd.eval("df.a.astype('str') + df.assign(underline='_').underline + df.b")
结果:
0 1_x
1 2_y
dtype: object
(我并不是说这是一个合理的方法,只是试图回答这个特定的问题)