相关疑难解决方法(0)

pandas + dataframe - 按部分字符串选择

我有一个DataFrame4列,其中2列包含字符串值.我想知道是否有办法根据与特定列的部分字符串匹配来选择行?

换句话说,函数或lambda函数会做类似的事情

re.search(pattern, cell_in_question) 
Run Code Online (Sandbox Code Playgroud)

返回一个布尔值.我熟悉语法,df[df['A'] == "hello world"]但似乎无法找到一种方法来做同样的部分字符串匹配说'hello'.

有人能指出我正确的方向吗?

python string dataframe pandas

356
推荐指数
12
解决办法
49万
查看次数

在Python中转义正则表达式字符串

我想使用来自用户的输入作为搜索某些文本的正则表达式模式.它有效,但我如何处理用户放置在正则表达式中有意义的字符的情况?例如,用户想要搜索Word (s):正则表达式引擎将(s)作为一个组.我希望它像一个字符串一样对待它"(s)".我可以运行replace用户输入并替换(with \()with \)但问题是我需要替换每个可能的正则表达式符号.你知道更好的方法吗?

python regex

211
推荐指数
3
解决办法
11万
查看次数

Pandas过滤串联的多个子串

我需要过滤pandas数据框中的行,以便特定的字符串列包含至少一个提供的子字符串列表.子字符串可能包含异常/正则表达式字符.比较不应涉及正则表达式,并且不区分大小写.

例如:

lst = ['kdSj;af-!?', 'aBC+dsfa?\-', 'sdKaJg|dksaf-*']
Run Code Online (Sandbox Code Playgroud)

我目前正在应用这样的面具:

mask = np.logical_or.reduce([df[col].str.contains(i, regex=False, case=False) for i in lst])
df = df[mask]
Run Code Online (Sandbox Code Playgroud)

我的数据帧很大(约1十亿行),lst长度为100.是否有更有效的方法?例如,如果lst找到第一个项目,我们不应该测试该行的任何后续字符串.

python string series dataframe pandas

30
推荐指数
2
解决办法
6942
查看次数

pandas dataframe str.contains()AND操作

df(Pandas Dataframe)有三行.

some_col_name
"apple is delicious"
"banana is delicious"
"apple and banana both are delicious"
Run Code Online (Sandbox Code Playgroud)

df.col_name.str.contains("apple|banana")

将捕获所有行:

"apple is delicious",
"banana is delicious",
"apple and banana both are delicious".
Run Code Online (Sandbox Code Playgroud)

如何在str.contains方法上应用AND运算符,以便它只捕获包含苹果和香蕉的字符串?

"apple and banana both are delicious"
Run Code Online (Sandbox Code Playgroud)

我想抓住包含10-20个不同单词的字符串(葡萄,西瓜,浆果,橙子,......等)

python string dataframe pandas

18
推荐指数
5
解决办法
2万
查看次数

检查pandas中的dataframe列中是否包含某个值

我试图检查python列中是否包含某个值.我正在使用df.date.isin(['07311954']),我不怀疑它是一个很好的工具.问题是我有超过350K的行,输出不会显示所有这些,所以我可以看到该值是否实际包含.简而言之,我只想知道(Y/N)列中是否包含特定值.我的代码如下:

import numpy as np
import pandas as pd
import glob


df = (pd.read_csv('/home/jayaramdas/anaconda3/Thesis/FEC_data/itpas2_data/itpas214.txt',\
    sep='|', header=None, low_memory=False, names=['1', '2', '3', '4', '5', '6', '7', \
    '8', '9', '10', '11', '12', '13', 'date', '15', '16', '17', '18', '19', '20', \
    '21', '22']))

df.date.isin(['07311954'])
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

16
推荐指数
3
解决办法
7万
查看次数

过滤掉包含特殊字符的 pandas 数据帧行的最快方法

我有一个特殊字符列表。例如

BAD_CHARS = ['.', '&', '\(', '\)', ';', '-']
Run Code Online (Sandbox Code Playgroud)

我想从 pandas 数据帧列中删除包含这些特殊字符的所有行。目前我正在做以下事情

df = '''
        words  frequency
            &         11
    CONDUCTED          3
       (E.G.,          5
   EXPERIMENT          6
         (VS.          5
        (WARD          3
            -         14
        2006;          3
           3D          5
         ABLE          5
     ABSTRACT          3
  ACCOMPANIED          5
     ACTIVITY         11
           AD          5
       ADULTS          6
'''
for char in BAD_CHARS:
    df = df[~df['word'].str.contains(char)]

# Expected Result
        words  frequency
    CONDUCTED          3
   EXPERIMENT          6
           3D          5
         ABLE          5
     ABSTRACT          3
  ACCOMPANIED          5
     ACTIVITY         11
           AD          5
       ADULTS          6
Run Code Online (Sandbox Code Playgroud)

首先它不起作用,其次我猜它不快。那么我怎样才能以更快的方式做到这一点呢?谢谢

python dataframe pandas

4
推荐指数
1
解决办法
8340
查看次数

用pandas搜索并返回匹配子串的索引

我想扩展这里提出的问题

上述问题中的解决方案返回 True 或 False。布尔值可用于对正确值进行子集化。

但是,我想获取与子字符串匹配的搜索值。

例如,(借用上面的问题)

s = pd.Series(['cat','hat','dog','fog','pet'])
searchfor = ['og', 'at']
Run Code Online (Sandbox Code Playgroud)

我想知道 'cat' 与 'at' 匹配,dog 与 'og' 匹配

python string series pandas

4
推荐指数
1
解决办法
984
查看次数

提取行直到具有列 Pandas 的特定单词的特定行

我有一个这样的数据框,

   Name    Product    Quantity
0  NaN     1010       10
1  NaN     2010       12
2  NaN     4145       18
3  NaN     5225       14
4  Total   6223       16
5  RRA     7222       18
6  MLQ     5648       45
Run Code Online (Sandbox Code Playgroud)

现在,我需要提取包含行的行/新数据框,直到Total该行位于列中Name

所需输出:

       Name    Product    Quantity
    0  NaN     1010       10
    1  NaN     2010       12
    2  NaN     4145       18
    3  NaN     5225       14
Run Code Online (Sandbox Code Playgroud)

我试过这个,

df[df.Name.str.contains("Total", na=False)]
Run Code Online (Sandbox Code Playgroud)

目前这没有帮助。任何建议都会很棒。

dataframe python-3.x pandas

2
推荐指数
1
解决办法
2438
查看次数

标签 统计

pandas ×7

python ×7

dataframe ×6

string ×4

series ×2

python-3.x ×1

regex ×1