我有一个联邦调查局犯罪统计的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不能成为选择者。
答案 0 :(得分:0)
尝试类似的东西:
df.reset_index(inplace=True)
df['state'].fillna(method='ffill', inplace=True)
答案 1 :(得分:0)
最初,我虽然要使用 reindex(method ='ffill'), 但仅适用于索引为单调的情况 增加或减少。
由于我们无法保证索引顺序,因此必须使用 3个阶段的方法:
执行此操作的代码是:
df.reset_index(inplace=True)
df.state = df.state.ffill()
df.set_index('state', inplace=True)