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

下面是我的代码:


import pandas as pd

import numpy as np


df = 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   both

a          1             a__1.0

b          2             b__2.0

c          nan          c__nan

nan      4              nan

在上面的列中,both我需要而不是NaN添加任何内容,并且列中添加的数字both应该看起来与numeric列中的一样(不添加.0等)。所以,我想得到:


object   numeric   both

a          1             a__1

b          2             b__2

c          nan          c__

nan      4              4__


猛跑小猪
浏览 165回答 1
1回答

qq_花开花谢_0

只需运行 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    both0      a      1.0  a__1.01      b      2.0  b__2.02      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  both0      a        1  a__11      b        2  b__22      c      NaN   c__3    NaN        4   4__
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python