我们能否为 pandas 分配一个新列并同时声明数据类型?
df = pd.DataFrame({'BP': ['100/80'],'Sex': ['M']})
df2 = (df.drop('BP',axis=1)
.assign(BPS = lambda x: df.BP.str.extract('(?P<BPS>\d+)/'))
.assign(BPD = lambda x: df.BP.str.extract('/(?P<BPD>\d+)'))
)
print(df2)
df2.dtypes
我们可以仅使用链式表达式将 dtype 设置为 np.float 吗?
请您参考如下方法:
显然,您不必这样做,但您可以。
df.drop('BP', 1).join(
df['BP'].str.split('/', expand=True)
.set_axis(['BPS', 'BPD'], axis=1, inplace=False)
.astype(float))
Sex BPS BPD
0 M 100.0 80.0
您的两个 str.extract 调用可以取消,取而代之的是单个 str.split 调用。然后您可以进行一个 astype 调用。
就个人而言,如果你问我关于风格,我会说这看起来更优雅:
u = (df['BP'].str.split('/', expand=True)
.set_axis(['BPS', 'BPD'], axis=1, inplace=False)
.astype(float))
df.drop('BP', 1).join(u)
Sex BPS BPD
0 M 100.0 80.0
