如何动态更新Pandas Dataframe列中的行值?

问题描述 投票:0回答:2

我有一个联邦调查局犯罪统计数据的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不能成为选择者。

python pandas dataframe series
2个回答
0
投票

简单地使用ffill()解决了我的问题,感谢Quang!


0
投票

尝试类似的东西:

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

0
投票

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

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

  • 重置索引(将state设置为常规列),
  • 在此列上致电fillna
  • 将索引重新设置为状态
  • 要做的代码是:

df.reset_index(inplace=True)
df.state = df.state.ffill()
df.set_index('state', inplace=True)
© www.soinside.com 2019 - 2024. All rights reserved.