python - 从上一个单元格插入值
问题描述
我正在使用 Pandas 来操作表格。我需要用之前的值替换“....”的重复字段
代码 |
---|
美国广播公司 |
…… |
…… |
…… |
123 |
…… |
…… |
…… |
应该
代码 |
---|
美国广播公司 |
美国广播公司 |
美国广播公司 |
美国广播公司 |
123 |
123 |
123 |
123 |
我认为类似于 df['Code'] == df['Code'].shift().fillna(-1) 但无法弄清楚如何逐行执行(9000行)
谢谢你
解决方案
替换....
为缺失值NaN
s,然后向前填充之前的无缺失值:
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()
推荐阅读
- command-line-interface - HTTP 状态 404 – 未找到 - MAGNOLIA
- c - 如何检查C中的指针是否空闲?
- jquery - DataTable 如何将 id 放在按钮上?
- ionic-framework - Ionic 4 SQLite - TypeError: Object(…) is not a function
- c# - 如何忽略 linqpad 中未使用的 dll 引用
- groovy - 如何防止 Groovy 从访问器方法创建字段?
- angular - 如何在 Angular 6 打字稿中访问对象数组中的单个属性?
- java - SpannableStringBuilder append() NullPointerException
- javascript - 列表分配在 JavaScript 中是如何工作的?
- python - 为什么python调用sys.exit时upstart服务不停止