Skip to main content
 首页 » 编程设计

python之在 Pandas 中添加具有特定数据类型的新列

2025年05月04日13Free-Thinker

我们能否为 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