Python Can';t使用pandas正确替换空白值
我是python初学者,所以我正在使用(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
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如果这个或任何答案已经解决了你的问题,请考虑点击复选标记。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这么做。嘿,再次感谢你的提示。当然,我的问题解决了,所以我接受它!