如何动态更新“熊猫数据框”列中的行值?

时间:2020-02-27 20:54:34

标签: python pandas dataframe series

我有一个联邦调查局犯罪统计的csv文件。按州分类,然后按城市分类。问题在于每个状态每个分组只有一行,因此在第一个状态之后,该系列的每个后续值都是NaN,直到下一个状态为止。

到目前为止,我的代码只是我用pandas read_csv函数引入了csv,我将最后几行截断了,因为它们无关紧要。

crime = pd.read_csv('crime-stats-by-state-and-city-2010.csv', nrows=9310)
# df looks like:
            city       |   etc...
state
ALABAMA     Abbeville
NaN         Adamsville
NaN         Addison
...         ...
CALIFORNIA  Adelanto
NaN         Alameda

我的问题是如何遍历状态列并将每个NaN值替换为正确的状态。我想我想做的是遍历每一行并检查当前项是NaN还是状态。如果是状态,那么我希望每个后续的NaN值都是相同的值,直到进入下一个状态为止,在该状态下我将重复相同的过程。

宁愿仅使用提示/提示/解释而不是代码,但乞g不能成为选择者。

2 个答案:

答案 0 :(得分:0)

尝试类似的东西:

df.reset_index(inplace=True)
df['state'].fillna(method='ffill', inplace=True) 

答案 1 :(得分:0)

最初,我虽然要使用 reindex(method ='ffill'), 但仅适用于索引为单调的情况 增加或减少。

由于我们无法保证索引顺序,因此必须使用 3个阶段的方法:

  • 重置索引(将 state 设置为常规列)
  • 在此列上调用填充
  • 将索引设置回状态

执行此操作的代码是:

df.reset_index(inplace=True)
df.state = df.state.ffill()
df.set_index('state', inplace=True)