从总共一列的行中删除 NaN

问题描述

我看了很多遍,并尝试了来自该站点的许多不同代码来帮助我解决问题。也许有人可以提出建议?

我有一个如下所示的数据框:

image of my dataframe

我希望那张桌子是正确的。我是 Stack Overflow 的新手,如果结果不正确,我很抱歉。我已经为此挣扎了几个小时。我终于在底部显示了我的 Total 行,但我不希望 NaN 显示在包含字符串的一列中。有人能告诉我在地球上简单地从这个数据框中的一个单元格中删除 NaN 需要什么吗?我已经无能为力了。

解决方法

您可以使用 fillna 用另一个值填充 NaN,例如,空字符串:

df['Gender'].fillna('',inplace=True)

或者,如果您更喜欢 'Other/Not Disclosed'

df['Gender'].fillna('Other/Not Disclosed',inplace=True)

在这两种情况下,当您打印 DataFrame 时,NaN 将不再存在。

还有其他方法可以处理 NaN 或缺失值;您可以查看here了解更多信息。

,

一种可能的解决方案(包括创建数据框):

import pandas as pd
import numpy as np

# create base of the dataframe
df = pd.DataFrame({'gender':['male','female','others'],'total':[484,81,11]})
# calculate percentage column
df['percentage'] = round(df['total']/df['total'].sum(),2)
# create SUM row
df.loc['TOTAL'] = df.select_dtypes(np.number).sum()
# replace string column 'gender' with empty string
df.loc['TOTAL','gender'] = ''

结果:

        gender  total   percentage
0       male    484.0   0.84
1       female  81.0    0.14
2       others  11.0    0.02
TOTAL           576.0   1.00