如何将用熊猫提取的一列excel数据中的NaN替换为0
Posted
技术标签:
【中文标题】如何将用熊猫提取的一列excel数据中的NaN替换为0【英文标题】:How to replace NaN to 0 in one column of excel data extracted with pandas 【发布时间】:2021-11-12 12:03:14 【问题描述】:我是一个只知道一小部分python基础知识的学生,我正在发布一个问题来解决统计作业中的问题。
https://i.stack.imgur.com/IPaRK.png
我需要从这些 excel 数据中提取值并在 python 中将它们输出为图形。
import numpy as np
import pandas as pd
from IPython.display import display
%matplotlib inline
pd.options.display.max_rows = 13
pd.set_option('display.max_columns',750)
file_name = 'C:\last_amb_hour_time.xls'
df = pd.read_excel(file_name, header=6, index_col=0)
dfdate = pd.read_excel(file_name, header=6, index_col=0, usecols='A')
dfpm10 = pd.read_excel(file_name, header=6, index_col=0, usecols='C')
dfpm25 = pd.read_excel(file_name, header=6, index_col=0, usecols='E')
dfozon = pd.read_excel(file_name, header=6, index_col=0, usecols='G')
dfno2 = pd.read_excel(file_name, header=6, index_col=0, usecols='I')
dfco = pd.read_excel(file_name, header=6, index_col=0, usecols='K')
dfso2 = pd.read_excel(file_name, header=6, index_col=0, usecols='M')
目前,数据已以这种方式提取。但是excel数据中很多空白都被当作NaN处理,所以无法输出图表。
https://i.stack.imgur.com/sayMh.png
喜欢这个
我想将一列中的 NaN 替换为 0。但是,如果我使用 dfpm10 = df.fillna(0)
或替换语法,则会输出整个 excel 数据,而不仅仅是一列。
我想知道使用哪个命令将提取的列中的 NaN 数据替换为 0。
这似乎是一个简单的问题,但由于我从未正确学习过python,因此即使尝试了几个小时也无法解决。对不起。
【问题讨论】:
简单地将dataframe df['colname'] = df['colname'].fillna(0)
子集化
对不起,我没听懂。我是否必须以与 col2 相同的方式放置 Excel 本身的列名?还是需要提前设置列名?
【参考方案1】:
您应该像这样添加要更改的列的名称
dfpm10 = df
dfpm10['COLUMN NAME HERE'] = dfPM10['COLUMN NAME HERE'].fillna(0)
【讨论】:
对不起,我不太明白。我不确定如何命名列。从excel图片可以看出,第一行设置名字比较难,因为格式是这样的。 您可以尝试使用它: print("Dataframe columns:", df.columns) 看到列名后,您可以根据需要更改它:df = df.rename (columns="OLD_NAME":"NEW_NAME")print("Dataframe columns:", df.columns) dfpm10 = df.rename(columns="Unnamed: 2":"pm10") dfpm10['pm10'] = dfpm10['pm10'].fillna(0)
谢谢,我已经成功输入了这样的代码来命名列。但是,即使按照这种方法,当我使用display(dfpm10)
时,也会打印整个excel数据。只在指定列的NaN值替换为0。按之前输入的dfpm10 = pd.read_excel(file_name, header=6, index_col=0, usecols='C')
格式做display(dfpm10)
时不能只打印一列吗?以上是关于如何将用熊猫提取的一列excel数据中的NaN替换为0的主要内容,如果未能解决你的问题,请参考以下文章