当列名未知时,如何循环遍历整个数据框以删除包含特定字符串的单元格中的数据?
以下是我目前掌握的情况:
for (i in colnames(df)){
df2 = df[~df[i].str.contains('found')]
我的数据:
Getting links from: https://www.bar.com/ Getting links from: https://www.boo.com/ Getting links from: https://www.foo.com/
0 ├───OK─── http://www.this.com/ ├───OK─── http://www.this.com/ ├───OK─── http://www.this.com/
1 ├───OK─── http://www.is.com/ ├───OK─── http://www.is.com/ ├───OK─── http://www.is.com/
2 ├─BROKEN─ http://www.broken.com/ 2 links found. 0 excluded. 0 broken. ├─BROKEN─ http://www.broken.com/
3 NaN NaN ├───OK─── http://www.set.com/
4 NaN NaN ├───OK─── http://www.one.com/
如果一个单元格包含一个字符串,例如“找到”,我如何删除它的全部内容?我想删除单元格中的所有内容(包括字符串之前和之后。)
您可以用df.replace({'test':np.nan})替换nan,这应该替换所有实例
由于您正在寻找一个字符串/值来检查并对整个DataFrame采取行动,因此DataFrame.replace
方法符合这里的警告。.
数据帧示例:
>>> df
a
0 foo1
1 foo2
2 bar
3 bar
4 bar
将条
替换为空白,或者如果需要,可以将其替换为NaN
值:
>>> df.replace("bar", "", regex=True)
a
0 foo1
1 foo2
2
3
4
或者用NaN
>>> df.replace("bar", np.nan, regex=True)
# df.replace("bar", np.nan, regex=True, inplace=True)
a
0 foo1
1 foo2
2 NaN
3 NaN
4 NaN
如果要替换到实际数据帧中,您可以选择使用inplace=True
:
模拟给出的示例:
>>> df
col1
0 Getting links from: https://www.bar.com/ Getting links from: https://www.boo.com/ Getting links from: https://www.foo.com/
1 ├───OK─── http://www.this.com/ ├───OK─── http://www.this.com/ ├───OK─── http://www.this.com/
2 ├───OK─── http://www.is.com/ ├───OK─── http://www.is.com/ ├───OK─── http://www.is.com/
3 ├─BROKEN─ http://www.broken.com/ 2 links found. 0 excluded. 0 broken. ├─BROKEN─ http://www.broken.com/
4 NaN NaN ├───OK─── http://www.set.com/
5 NaN NaN ├───OK─── http://www.one.com/
str的结果包含:
>>> df[~df["col1"].str.contains("found")]
col1
0 Getting links from: https://www.bar.com/ Getting links from: https://www.boo.com/ Getting links from: https://www.foo.com/
1 ├───OK─── http://www.this.com/ ├───OK─── http://www.this.com/ ├───OK─── http://www.this.com/
2 ├───OK─── http://www.is.com/ ├───OK─── http://www.is.com/ ├───OK─── http://www.is.com/
4 NaN NaN ├───OK─── http://www.set.com/
5 NaN NaN ├───OK─── http://www.one.com/
或者如上所述,确保值为字符串类型以应用该操作
>>> df[~df["col1"].astype(str).str.contains("found")]
你可以在这里使用appymap
:
import re
# just make sure all values are string type
df = df.astype(str)
# remove the text which has word found
df.applymap(lambda x: re.sub('.*found.*','',x ))
0
0 Getting links from: https://www.boo.com/
1 ├───OK─── http://www.this.com/
2 ├───OK─── http://www.is.com/
3
4 nan
5 nan
我试图找到一个单词中所有元音的所有可能组合。例如给定“你好”: 我编写了以下函数,它只接受每个元音,在每个元音处,它只会将其全部替换为元音并将每个版本添加到列表中。我正在尝试根据需要将其更改为排列,但它不起作用。我尝试在附加后插入元音(“”.join(string),arr),但这会导致无限递归。 有人有什么建议吗?
问题内容: 我有一个包含多个空格的字符串。我想用加号代替它们。我以为我可以用 但它只会替换第一次出现的情况。如何获得它来代替所有出现的情况? 问题答案: 这是不需要正则表达式的替代方法:
问题内容: 谁能告诉我为什么我运行这种方法用符号替换值时为什么会遇到bouns异常之外的索引? 例如,我传递消息 我试图查看此论坛主题,但无法理解内容 http://www.coderanch.com/t/383666/java/java/String- replaceAll 问题答案: 这是特殊字符,您需要使用转义字符 试试这个 而且在您的代码中您试图用相同的内容替换内容没有意义 输出 更新资料
问题内容: 我可能在做一些非常愚蠢的事情,但是我很沮丧。 我有一个数据框,我想用超过零的值替换特定列中的值。我以为这是实现此目标的一种方式: 如果将通道复制到新的数据框中,这很简单: 这完全符合我的要求,但似乎无法与通道一起用作原始数据帧的一部分。 问题答案: 可以在0.20.0之前的熊猫版本上正常工作,但是由于pandas为0.20.0 ,因此不推荐使用,因此应避免使用它。而是可以使用或索引器。
我想只从我的两个对象数组和中得到那些符合标准的子文档。即使我已经找到了这个stackoverflow答案#2(根据标准查找猫鼬子文档),它对我来说并不像期望的那样工作,或者我错过了一些东西。 我的文档如下所示: 它将在和中打印项目及其所有子文档。但是,我只想获取与给定上载id匹配的子文档。我做错了什么? 编辑:这个问题是指用猫鼬来解决它。我不能在Mongoose中使用这个问题的集合语句(只检索Mo
问题内容: 如何使用JavaScript从值读取换行符并将所有换行符替换为元素? 例: 从PHP传递的变量如下: 我希望我的结果在JavaScript转换后看起来像这样: 问题答案: 这会将所有退货转换为HTML 如果您想知道什么?:的意思。它称为非捕获组。这意味着括号内的正则表达式组不会保存在内存中,以后再引用。