python - 为列设置值但使用索引
问题描述
我有一个这样的数据框:
a b c d e
42 1 0 1 0
42 0 0 0 1
42 0 1 0 0
42 1 1 0 0
我想做一些可以使bcde列中的所有1等于a列的事情,所以基本上是这样的:
a b c d e
42 42 0 42 0
42 0 0 0 42
42 0 42 0 0
42 42 42 0 0
所以它应该类似于 df.loc[df['b']==1,'b'] = df['a'] 但适用于所有 bcde。整个数据框有数百列,所以我不能使用 .loc 来设置值,而 iloc 不能像 loc 一样设置值。
解决方案
编辑:您可以简单地使用pandas.DataFrame.where()并将其df["a"] Series
作为替换。这样,它适用于数字和字符串。
# df is your DataFrame
# New DataFrame...
new_df = df.where(df != 1, df["a"], axis="index")
# ...or in place:
df.where(df != 1, df["a"], axis=0), inplace=True)
推荐阅读
- docker - Docker 构建错误 :: exec: \"/bin/sh\": stat /bin/sh: no such file or directory
- vue.js - vue js表达式中的算术
- acumatica - 仅在输入选择器时(在打开选择器网格之前),如何使所有选择器字段可搜索?
- java - 有没有办法在 RESTful API 中过滤或排序数据?
- git - 如果正在创建/删除分支,则 Teamcity 触发器
- sql-server - me.recordset.requery 使用 Query 作为 RecordSource 时出现错误 3251 失败
- image-processing - 某些图像的顶点错误 - Google Vision API 对象本地化
- python - pyenv install: 3.x BUILD FAILED (Ubuntu 20.04 using python-build 20180424)
- php - 带有 pem 和密钥的 php CURL 请求的路径问题
- python - 循环遍历可迭代对象时停止检查条件