为了账号安全,请及时绑定邮箱和手机立即绑定

使用适当的 NaN 处理将熊猫数据框列从数字转换为字符串

使用适当的 NaN 处理将熊猫数据框列从数字转换为字符串

猛跑小猪 2022-07-05 15:35:21
下面是我的代码:import pandas as pdimport numpy as npdf = pd.DataFrame({ 'object': ['a', 'b', 'c',np.nan],                   'numeric': [1, 2, np.nan , 4],                 })df['both'] = df['object'] + '__' + df['numeric'].astype(str)运行后是df这样的:object   numeric   botha          1             a__1.0b          2             b__2.0c          nan          c__nannan      4              nan在上面的列中,both我需要而不是NaN添加任何内容,并且列中添加的数字both应该看起来与numeric列中的一样(不添加.0等)。所以,我想得到:object   numeric   botha          1             a__1b          2             b__2c          nan          c__nan      4              4__
查看完整描述

1 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

只需运行 if 语句来检查您是否有空值。


你可以使用fillna,但你会在两边都有不匹配的'__'。


conditions = [(df['numeric'].isnull()),

             (df['object'].isnull())]


outputs = [df["object"].astype(str) + "__", df["numeric"].astype(str) + "__"]


df['both']  = np.select(conditions,outputs,default= 

             df['object'] + '__' + df['numeric'].astype(str))


print(df)

  object  numeric    both

0      a      1.0  a__1.0

1      b      2.0  b__2.0

2      c      NaN     c__

3    NaN      4.0   4.0__

如果您正在使用,pandas 0.24+那么您可以利用Int64处理 nan 值的 dtype :


在这里阅读更多


df['numeric'] = df['numeric'].astype('Int64')


df['both']  = np.select(conditions,outputs,default=  

            df['object'] + '__' + df['numeric'].astype(str))

print(df)

  object  numeric  both

0      a        1  a__1

1      b        2  b__2

2      c      NaN   c__

3    NaN        4   4__


查看完整回答
反对 回复 2022-07-05
  • 1 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信