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

Python 如何动态更新Dataframe列中的行值?,python,pandas,dataframe,series,Python,Pandas,Dataframe,Series,我有一份fbi犯罪统计的csv文件。它按州分组,然后按城市分组。问题是每个状态每个分组只有一行,因此在第一个状态之后,该序列的每个后续值都是NaN,直到下一个状态 到目前为止,我的代码只是使用pandas read_csv函数拉入csv,我截断了最后几行,因为它们不相关 crime = pd.read_csv('crime-stats-by-state-and-city-2010.csv', nrows=9310) # df looks like: city

我有一份fbi犯罪统计的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
我的问题是如何遍历state列并用正确的状态替换每个NaN值。我想我要做的是迭代每一行,检查当前项是NaN还是状态。如果它是一个状态,那么我希望每个后续的NaN值都是相同的值,直到我进入下一个状态,在该状态下我将重复相同的过程

我更喜欢提示/提示/解释,而不仅仅是代码,但乞丐不能挑三拣四

试试以下方法:

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

最初我想到了使用reindex(method='ffill'), 但它只适用于指数单调的情况 增加或减少

因为我们不能保证索引顺序,所以我们必须使用 三阶段方法:

  • 重置索引(使状态成为常规列)
  • 在这个专栏上给菲尔打电话
  • 将索引设置回状态
执行此操作的代码是:

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

这是
ffill()
。但是它看起来像是你的索引。
state
。太棒了!非常感谢你!