我有一些要从CSV文件读取的数据,并且一个数据帧列记录在不同的时间戳记间隔(时间序列数据)上,我无法使用df.fillna(method = 'ffill').fillna(method = 'bfill')
。
如果我不使用keep_default_na=False
来读取CSV文件,Python会用NaN来填补空白,但我希望这些空白是空白的,因此我可以使用df.fillna(method = 'ffill')
import pandas as pd
import numpy as np
#read CSV file
df_raw = pd.read_csv('C:\\desktop\\combinedSP.csv', index_col='Date', parse_dates=True, keep_default_na=False)
df_raw.head()
df_raw2 = df_raw.fillna(method = 'ffill').fillna(method = 'bfill')
df_raw2.head()
似乎无论我如何尝试,我都没有在标为OAT
的列上解决此问题:(
任何提示,我将数据CSV文件here加载到我的GitHub帐户中。
答案 0 :(得分:4)
当您执行keep_default_na=False
时,这意味着read_csv
通常会读取并解析为NaN的内容将不再:
默认情况下,以下值解释为NaN:
‘’, ‘#N/A’, ‘#N/A N/A’, ‘#NA’, ‘-1.#IND’, ‘-1.#QNAN’, ‘-NaN’, ‘-nan’, ‘1.#IND’, ‘1.#QNAN’, ‘N/A’, ‘NA’, ‘NULL’, ‘NaN’, ‘n/a’, ‘nan’, ‘null’
。
在这种情况下,它没有将空字符串''
解析为NaN,而是将其保留为空字符串。
丢弃该kwarg和fillnas应该起作用。