用NaN替换None并忽略Pandas中的None类型

2024-09-28 22:39:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从pandas数据帧创建一个原始字符串变量,该变量最终将写入.cfg文件,方法是首先将两列连接在一起,如下所示,并避免None

df部分:

                         command                          value
...
439                      sensitivity                      "0.9"
440        cl_teamid_overhead_always                          1
441                 host_writeconfig                       None
...

code

^{pr2}$

我试图首先用NaN替换所有的None值,这样cfg_output中的no行包含“None”作为字符串的一部分。然而,这样做我似乎得到了一些不希望的结果。我用打印语句来看看发生了什么。在

似乎df = df['value'].replace('None', np.nan, inplace=True),只是输出None。在

似乎df = df['command'].astype(str)+' '+df['value'].astype(str)和{}会导致以下错误:

TypeError: 'NoneType' object has no attribute '__getitem__'

因此,我认为通过忽略任何NaN的出现,代码可以平稳地运行,尽管我不确定如何使用Pandas

最终,我的期望输出如下:

sensitivity "0.9"
cl_teamid_overhead_always 1
host_writeconfig

Tags: no字符串nonehostdfvalueclnan
2条回答

您可以replace无到“”

df=df.replace('None','')
df['command'].astype(str)+' '+df['value'].astype(str)
Out[436]: 
439                sensitivity 0.9
440    cl_teamid_overhead_always 1
441              host_writeconfig 
dtype: object

首先,df['value'].replace('None', np.nan, inplace=True)返回None,因为您使用inplace=True参数调用该方法。此参数告诉replace不返回任何内容,而是按原样修改原始的dataframe。类似于pop或{}在列表中的工作方式。在

话虽如此,您还可以使用空字符串获得调用fillna的所需输出:

import pandas as pd
import numpy as np

d = {
    'command': ['sensitivity', 'cl_teamid_overhead_always', 'host_writeconfig'],
    'value': ['0.9', 1, None]
}

df = pd.DataFrame(d)
# df['value'].replace('None', np.nan, inplace=True)
df = df['command'].astype(str) + ' ' + df['value'].fillna('').astype(str)
cfg_output = '\n'.join(df.tolist())

>>> print(cfg_output)

sensitivity 0.9
cl_teamid_overhead_always 1
host_writeconfig 

相关问题 更多 >