我有一个联邦调查局犯罪统计数据的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不能成为选择者。
简单地使用ffill()解决了我的问题,感谢Quang!
尝试类似的东西:
df.reset_index(inplace=True)
df['state'].fillna(method='ffill', inplace=True)
起初我虽然想使用reindex(method ='ffill')] >>,但仅适用于索引为单调的情况增加或减少。
由于我们不能保证索引顺序,因此必须使用3个阶段的方法:
要做的代码是:
df.reset_index(inplace=True)
df.state = df.state.ffill()
df.set_index('state', inplace=True)