- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
假设我有一个数据框 df
,其中包含数字列 "A"、"B"、"C"...
以及一个 bool 列 “默认”
。我还有一个特殊列的列表,例如 special = ["A", "D", "E", "H", ...]
,以及相应默认值的列表: 默认 = [a, d, e, h, ...]
。我想要做的是:对于 DEFAULT
为 True
的每一行,将特殊列的值替换为相应的默认值。
当然,我可以手动循环遍历数据帧来执行此操作,但这很难看而且可能很慢。
我已经尝试了各种直观的方法,例如:
df[df.DEFAULT][special] = default
或
df[special] = df[special].where(not df.DEFAULT, default, axis = 1)
但我的尝试都没有奏效。我也读过许多类似 的问题,但似乎没有一个对我有用。对不起,如果我错过了正确的。
输入数据示例:
df = pd.DataFrame(np.random.rand(10,10))
df.columns = list('ABCDEFGHIJ')
df["DEFAULT"] = [False,False,True,False,True,False,False,True,True,False]
special = list("ADGI")
default = [1,2,3,4]
最佳答案
我想你可以先用列表 special
和 default
创建 dictionary
,然后在 df
中替换所需的值列名和最后一个 replace
它们由 dictionary
:
maping = dict(zip(special,default))
print maping
{'A': 1, 'I': 4, 'D': 2, 'G': 3}
df.loc[df.DEFAULT, special] = special
df = df.replace(maping)
print df
A B C D E F G \
0 0.518990 0.066074 0.472414 0.438256 0.202796 0.423588 0.357758
1 0.522062 0.035160 0.906231 0.816364 0.552581 0.851809 0.962395
2 1.000000 0.603323 0.128021 2.000000 0.002065 0.198911 3.000000
3 0.947822 0.728559 0.329651 0.791761 0.108166 0.392319 0.221218
4 1.000000 0.506343 0.349898 2.000000 0.024577 0.633987 3.000000
5 0.316550 0.826805 0.103991 0.633982 0.751032 0.155978 0.426002
6 0.590585 0.435532 0.798689 0.923456 0.299154 0.388404 0.486272
7 1.000000 0.263768 0.944626 2.000000 0.720266 0.925395 3.000000
8 1.000000 0.649534 0.927976 2.000000 0.816151 0.911451 3.000000
9 0.668218 0.286717 0.019462 0.399222 0.308528 0.942185 0.888265
H I J DEFAULT
0 0.163684 0.441374 0.262800 False
1 0.110522 0.630832 0.997994 False
2 0.330441 4.000000 0.280859 True
3 0.683726 0.102446 0.397026 False
4 0.268709 4.000000 0.955568 True
5 0.892707 0.103578 0.018096 False
6 0.588151 0.983854 0.697330 False
7 0.423054 4.000000 0.367475 True
8 0.369524 4.000000 0.560451 True
9 0.860311 0.653000 0.344289 False
关于python - 有条件地用 Pandas 中的默认值替换多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36785204/
我想对一个字符串执行搜索和替换,比如 password。 正如您从问题中了解到的那样,替换后的字符串应变为 sdvvzrug。 但不幸的是,下面的代码输出bbbbcaab: $search = ran
我正在使用 futurize --stage2它应用了许多源代码转换以使代码 python2 和 python3 兼容。其中一个修复是所有分区 a/b 都替换为 old_div(a/b),我想避免这种
我正在使用 RStudio,但我在控制台上的输出被截断了。我找不到如何停止截断(我尝试搜索 ?options 以及在谷歌上搜索的时间比我想承认的要长)。 编辑:我向大家道歉!我最初的长名称为“This
我有一个 fragment 堆栈,我在其中使用替换和相加。添加或替换我的 fragment 的代码(在我的 Activity 中)如下 private fun addFragment(fragment
我在一个数组中插入了一些字符串,但在我这样做之前,我想按照主题所说的去做。只用 %20 替换空格,我这样做: Name.push(linkText.replace(" ", "%20")); 但是我如
我正在尝试编译和测试我在网上看到的代码 Expanding an IP add 。但是,当我尝试编译它时,我收到有关 StringBuilder 替换方法的错误。它说: IPadd.java:52:
我正在尝试使用 dplyr 的最新功能重写我的部分代码,方法是将 data.frame() 替换为 data_frame() 和 cbind() 与 bind_cols(): library(rgeo
我最近偶然发现了 replace()和 "[ x.tst s.tst s.tst [,1] [,2] [,3] [1,] 0 0 0
我一直想知道,如何在给定的参数内进行替换。 如果你有这样的一行: 123,Hello,World,(I am, here), unknown 你想更换 World与 Foobar那么这是一个简单的任务
如何转义字符串中的双引号?例如, input: "Nobody" output: \"Nobody\" 我尝试过这样的操作,但不起作用: String name = "Nobody"; name.r
我正在做类似的事情: SQL sql sQl SqL var ps = document.getElementsByTagName('p'); for(var i = 0; i 但它不会替换文本。
我正在尝试用 \" 替换所有 " 并用 JSON 解析字符串,但浏览器抛出错误 SyntaxError: JSON Parse error: Unrecognized token '\'. 下面是代码
大家好,在这里挣扎...... 是否可以将第一个正斜杠之间的任何内容替换为“”,但保留其余部分? 例如var 将是 string "/anything-here-this-needs-to-be-re
在下面的代码中,JavaScript 替换函数中的 alert(a) 将提醒匹配的字符串,在本例中,将是 {name} 和 {place}。 这按照文档 javascript docs 的描述工作,即
+-----------------------------+ | tables | +-------------------
我正在尝试用\"替换包含 "的字符串,下面是我尝试过的程序 String s="\"/test /string\""; s = s.replaceAll("\"", "\\\"");
var text = "a's ..a's ...\"... "; text = convert(text); function convert( text ) { var n = text
我正在尝试使用 JavaScript 中的替换函数,但有一个问题。 strNewDdlVolCannRegion = strNewDdlVolCannRegion.replace(/_existing
好吧,首先我对我的上一篇文章感到非常抱歉,但我真的需要帮助,我会把我真正想要的东西放在一个更清晰的代码中。我不擅长 javascript,所以希望你能帮助我。
我正在写一张纸条,遇到了障碍。可能有更有效的方法来执行此操作,但我对 Python 还很陌生。我正在尝试创建用户生成的 IP 地址列表。我正在使用 print 来查看生成的值是否正确。当我运行此代码时
我是一名优秀的程序员,十分优秀!