Python 如何动态更新Dataframe列中的行值?
我有一份fbi犯罪统计的csv文件。它按州分组,然后按城市分组。问题是每个状态每个分组只有一行,因此在第一个状态之后,该序列的每个后续值都是NaN,直到下一个状态 到目前为止,我的代码只是使用pandas read_csv函数拉入csv,我截断了最后几行,因为它们不相关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
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
。太棒了!非常感谢你!