使用df.dropna()返回NoneType对象

时间:2019-06-04 23:54:01

标签: python python-3.x pandas

我有一段看起来像这样的代码:

import pandas as pd
file = pd.read_csv("/my/path/to/spreadsheet.csv", index_col=0)
file = file.dropna(how="any", inplace=True)
file = file.fillna("", inplace=False)
print(file)

预期输出:

       Profit ($)  Spendings ($)      Total Profit  EOY Profit ($)
Month                                                                       
Jan           200             80               120            3150
Feb           310             50               260                          
Mar           250             40               210                          
Apr           170             70               100                          
May           650            200               450                          
Jun           180            150                30                          
Jul           530            160               370                          
Aug           610            270               340                          
Sep           470            180               290                          
Oct           680            290               390                          
Nov           570            310               260                          
Dec           600            270               330                          

当前输出:

  

回溯(最近通话最近):     在第5行的“ /my/path/to/OpenSheet.py”文件中       文件= file.fillna(“”,inplace = False)   AttributeError:“ NoneType”对象没有属性“ fillna”

我了解这意味着当我执行file = file.dropna(how="any", inplace=True)时,它以某种方式变成了NoneType对象,但是为什么会这样?

还有,谁能告诉我如何获得预期的输出?

1 个答案:

答案 0 :(得分:0)

这是因为inplace=True参数就地修改了您的参数,这意味着函数返回了None。将其更改为

import pandas as pd
file = pd.read_csv("/my/path/to/spreadsheet.csv", index_col=0)
file.dropna(how="any", inplace=True)
file = file.fillna("", inplace=False)
print(file)

此外,看来您的EOY Profit列将导致几乎所有行都被删除:

file.dropna(how="any", inplace=True)

file
  EOY_Profit Month Profit Spendings Total_Profit
0       3150   Jan    200        80          120

所以我只想完全避免使用dropna

file = pd.read_csv("/my/path/to/spreadsheet.csv", index_col=0)
file = file.fillna("", inplace=False)
    EOY_Profit Month Profit Spendings Total_Profit
0        3150   Jan    200        80          120
1               Feb    310        50          260
2               Mar    250        40          210
3               Apr    170        70          100
4               May    650       200          450
5               Jun    180       150           30
6               Jul    530       160          370
7               Aug    610       270          340
8               Sep    470       180          290
9               Oct    680       290          390
10              Nov    570       310          260
11              Dec    600       270          330