Datafame填充留下空值吗?

时间:2019-03-22 21:37:46

标签: python pandas

正如标题所示,在使用填充后,我在数据框中留下了空值。这是数据框相关部分的示例:

data = {'03_15_2019': {0: u'tariff rail rates for unit and shuttle train shipments1',
  1: np.nan,
  2: np.nan,
  3: np.nan,
  4: u'unit train'},
 u'bushel2': {0: np.nan, 1: np.nan, 2: np.nan, 3: u'         bushel2', 4: np.nan},
 u'destination_region3': {0: np.nan,
  1: np.nan,
  2: np.nan,
  3: u'Destination region3',
  4: np.nan},
 u'fuel_surcharge_per_car': {0: np.nan,
  1: u'Fuel surcharge per car',
  2: np.nan,
  3: np.nan,
  4: np.nan},
 u'metric_ton': {0: np.nan,
  1: np.nan,
  2: u'Tariff plus surcharge per:',
  3: u'     metric ton',
  4: np.nan},
 u'origin_region3': {0: np.nan, 1: np.nan, 2: np.nan, 3: u'Origin region3', 4: np.nan},
 u'rate_car': {0: np.nan, 1: np.nan, 2: u'Tariff', 3: u'rate/car', 4: np.nan},
 u'y_y4': {0: np.nan, 1: u'Percent', 2: u'change', 3: u'Y/Y4', 4: np.nan}}
df = pd.DataFrame.from_dict(data)

这是我要使用的代码:

df[df.columns[0]].ffill(inplace = True)
df[df.columns[0]] = df[df.columns[0]].str.lower()
values = df.index[df[df.columns[0]].str.contains("train")].tolist()

错误在第三行返回为:

ValueError: cannot index with vector containing NA / NaN values

当我检查数据框时,它会显示以下信息:

0     tariff rail rates for unit and shuttle train s...
1     tariff rail rates for unit and shuttle train s...
2     tariff rail rates for unit and shuttle train s...
3                                                   NaN
4                                            unit train

奇怪的是,如果我要在jupyter笔记本的新单元格中重新运行上面的代码,它将起作用。仅在第一次运行时它不起作用。

2 个答案:

答案 0 :(得分:0)

df[df.columns[0]].ffill(inplace = True)

此行替换第一列中的NaN。当您在此行之后检查df时,将不会是您在上面发布的内容。

答案 1 :(得分:0)

pandas.DataFrame.ffill标记用于向前填充,这意味着如果列的第一项为NaN,则不会填充(不会向前传播)。

所以基本上:

data = {'a': [1,2,None, None], 'b': [None, 2, None, 4]}
df = pd.DataFrame(data)
df.ffill()

将导致:

     a    b
0  1.0  NaN
1  2.0  2.0
2  2.0  2.0
3  2.0  4.0

您可能希望在ffill之后加上fillna,以不同方式处理这些情况