Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Can';t使用pandas正确替换空白值_Python_Pandas - Fatal编程技术网

Python Can';t使用pandas正确替换空白值

Python Can';t使用pandas正确替换空白值,python,pandas,Python,Pandas,我是python初学者,所以我正在使用(df)在数据帧中使用pandas进行一些数据分析 例如,当我显示前5行时,我注意到在第4行的“价格”列(对象类型)中有一个空值: In [ ]: restaurants_df.head() Out[ ]: name year latitude longitude city region zipCode cuisine price 0 Kilian Stuba

我是python初学者,所以我正在使用(
df
)在数据帧中使用pandas进行一些数据分析

例如,当我显示前5行时,我注意到在第4行的“
价格
”列(
对象类型
)中有一个空值:

In [ ]: restaurants_df.head()
Out[ ]:
    name            year    latitude    longitude     city        region    zipCode   cuisine           price
0   Kilian Stuba    2019    47.348580   10.17114   Kleinwalsertal Austria    87568  Creative              $
1   Pfefferschiff   2019    47.837870   13.07917    Hallwang      Austria    5300   Classic cuisine       $
2   Esszimmer       2019    47.806850   13.03409    Salzburg      Austria    5020   Creative              $
3   Carpe Diem      2019    47.800010   13.04006    Salzburg      Austria    5020   Market cuisine        $
4   Edvard          2019    48.216503   16.36852    Wien          Austria    1010   Modern cuisine  
然后我检查每列中有多少
NaN
值。在
price
列中,有151个值:

In [ ]: restaurants_df.isnull().sum()
Out[ ]: name           0
        year           0
        latitude       0
        longitude      0
        city           2
        region         0
        zipCode      149
        cuisine        0
        price        151
        dtype: int64
之后,我将这些值替换为字符串
“No Price”
,并确认所有值都已替换

In [ ]: restaurants_df["price"].fillna("No Price", inplace = True)
        restaurants_df.isnull().sum()
Out[ ]: name           0
        year           0
        latitude       0
        longitude      0
        city           0
        region         0
        zipCode        0
        cuisine        0
        price          0
        dtype: int64
但是,当我显示前5行时,问题仍然存在

In [ ]: restaurants_df.head()
Out[ ]:
    name            year    latitude    longitude     city        region    zipCode   cuisine           price
0   Kilian Stuba    2019    47.348580   10.17114   Kleinwalsertal Austria    87568  Creative              $
1   Pfefferschiff   2019    47.837870   13.07917    Hallwang      Austria    5300   Classic cuisine       $
2   Esszimmer       2019    47.806850   13.03409    Salzburg      Austria    5020   Creative              $
3   Carpe Diem      2019    47.800010   13.04006    Salzburg      Austria    5020   Market cuisine        $
4   Edvard          2019    48.216503   16.36852    Wien          Austria    1010   Modern cuisine  

你知道为什么会发生这种情况,以及我如何解决它吗?提前谢谢

据我所知,您处理的是空值和空值。这些问题的处理方式不同。查看以了解如何处理它们。

我的理解是,您同时处理空白值和空值。这些问题的处理方式不同。查看以了解如何处理这些问题。

查看at上的数据集显示,前四家餐厅为5'$,而第五家为4'$。因此,我猜测jupyter笔记本并没有直观地显示所有的“$”,但是内部的数据是正确的

若要再次检查我是否正确,请尝试运行

df.price
看看你能得到什么。我认为这可能与jupyter的HTML处理程序有关,它试图显示四个美元符号

如果您对此感到不安,simplay可以使用类似以下内容的数字替换“$”符号

df.replace({'price': {'$': 1, '$$': 2, '$$$': 3, '$$$$': 4, '$$$$$': 5}})

查看at上的数据集显示,前四家餐厅的价格为5'$,而第五家为4'$。因此,我猜测jupyter笔记本并没有直观地显示所有的“$”,但是内部的数据是正确的

若要再次检查我是否正确,请尝试运行

df.price
看看你能得到什么。我认为这可能与jupyter的HTML处理程序有关,它试图显示四个美元符号

如果您对此感到不安,simplay可以使用类似以下内容的数字替换“$”符号

df.replace({'price': {'$': 1, '$$': 2, '$$$': 3, '$$$$': 4, '$$$$$': 5}})

我认为熊猫不会将带有“”的区域识别为空。例如:

df2 = pd.DataFrame(np.array([[1, 2, ''], [4, 5, 6], [7, 8, 9]]),
                   columns=['a', 'b', 'c'])
然后:

请参阅,然后尝试:

pandas.options.mode.use_inf_as_na = True
编辑:

您也可以尝试通过以下方式重播:

df2.replace({'': 'No Price'}, inplace=True)
EDIT2:我相信@AKareem有解决方案,但为了扩展,你可以用它来逃避乳胶

restaurants_df.replace({'price': {
                       '$': '\$', 
                       '$$': '\$$', 
                       '$$$': '\$$$', 
                       '$$$$': '\$$$$', 
                       '$$$$$': '\$$$$$'}}
           , inplace=True)

我认为熊猫不会将带有“”的区域识别为空。例如:

df2 = pd.DataFrame(np.array([[1, 2, ''], [4, 5, 6], [7, 8, 9]]),
                   columns=['a', 'b', 'c'])
然后:

请参阅,然后尝试:

pandas.options.mode.use_inf_as_na = True
编辑:

您也可以尝试通过以下方式重播:

df2.replace({'': 'No Price'}, inplace=True)
EDIT2:我相信@AKareem有解决方案,但为了扩展,你可以用它来逃避乳胶

restaurants_df.replace({'price': {
                       '$': '\$', 
                       '$$': '\$$', 
                       '$$$': '\$$$', 
                       '$$$$': '\$$$$', 
                       '$$$$$': '\$$$$$'}}
           , inplace=True)

请在问题中提供代码,而不是屏幕截图。这将便于回答者重现您的问题,而不是手动键入。很抱歉给您带来不便,我是新来的,我正在尝试找出提问的最佳方式。谢谢你的提示,我会编辑我的帖子的!请提供一份报告。除非绝对必要,否则请不要以图像形式共享信息。请参阅:,。请在问题中提供代码,而不是屏幕截图。这将便于回答者重现您的问题,而不是手动键入。很抱歉给您带来不便,我是新来的,我正在尝试找出提问的最佳方式。谢谢你的提示,我会编辑我的帖子的!请提供一份报告。除非绝对必要,否则请不要以图像形式共享信息。看,你说得对!我只是仔细检查了一下,事实上,Jupyther并没有显示
price
列的全部内容。我已经考虑过将每一组符号转换成数字比例,所以我将继续进行分析。谢谢你的帮助!Hi @ RICARDROP9如果这个或任何答案已经解决了你的问题,请考虑点击复选标记。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这么做。嘿,再次感谢你的提示。当然,我的问题解决了,所以我接受它!你说得对!我只是仔细检查了一下,事实上,Jupyther并没有显示
price
列的全部内容。我已经考虑过将每一组符号转换成数字比例,所以我将继续进行分析。谢谢你的帮助!Hi @ RICARDROP9如果这个或任何答案已经解决了你的问题,请考虑点击复选标记。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这么做。嘿,再次感谢你的提示。当然,我的问题解决了,所以我接受它!