首页 > 解决方案 > 从上一个单元格插入值

问题描述

我正在使用 Pandas 来操作表格。我需要用之前的值替换“....”的重复字段

代码
美国广播公司
……
……
……
123
……
……
……

应该

代码
美国广播公司
美国广播公司
美国广播公司
美国广播公司
123
123
123
123

我认为类似于 df['Code'] == df['Code'].shift().fillna(-1) 但无法弄清楚如何逐行执行(9000行)

谢谢你

标签: pythonpandasdataframeloops

解决方案


替换....为缺失值NaNs,然后向前填充之前的无缺失值:

df['Code'] = df['Code'].replace('....', np.nan).ffill()

编辑:

试图在 DataFrame 中的切片副本上设置一个值。尝试改用 .loc[row_indexer,col_indexer] = value

意味着在之前的某些行中使用了过滤,如果您df稍后修改值,您会发现修改不会传播回原始数据(df1),并且 Pandas 会发出警告:

df = df1[df1['col'] == 1]

df['Code'] = df['Code'].replace('....', np.nan).ffill()

解决方案是使用DataFrame.copy

df = df1[df1['col'] == 1].copy()

df['Code'] = df['Code'].replace('....', np.nan).ffill()

推荐阅读