python - 从 pandas 列的字符串列表中删除数字

标签 python pandas string digits

我有这个 pandas 数据框

0  Tokens 
1: 'rice', 'XXX', '250g'
2: 'beer', 'XXX', '750cc'

这里的所有标记,“rice”,“XXX”和“250g”都在同一个字符串列表中,也在同一列中

我想删除数字,因为换句话说, 数字无法删除。

我尝试过这段代码:

def remove_digits(tokens):
    """
    Remove digits from a string
    """
    return [''.join([i for i in tokens if not i.isdigit()])]

df["Tokens"] = df.Tokens.apply(remove_digits)
df.head()

但它只加入了字符串,我显然不想这样做。

我想要的输出:

0  Tokens
1: 'rice' 'XXX' 'g'
2: 'beer', 'XXX', 'cc'

最佳答案

这可以使用 pandas 方法实现,这些方法是矢量化的,因此比循环更有效。

import pandas as pd

df = pd.DataFrame({"Tokens": [["rice", "XXX", "250g"], ["beer", "XXX", "750cc"]]})

col = "Tokens"
df[col] = (
    df[col]
    .explode()
    .str.replace("\d+", "", regex=True)
    .groupby(level=0)
    .agg(list)
)
#             Tokens
# 0   [rice, XXX, g]
# 1  [beer, XXX, cc]

这里我们使用:

关于python - 从 pandas 列的字符串列表中删除数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68339570/

相关文章:

python - 在 Windows 10 上安装 numba 和 llvmlite Python 失败

python - 为什么两个不同对象的哈希函数返回相同的值?

python - (?ui) 在 Python 正则表达式中意味着什么?

python - 如何检测网页的语言

Python从数据帧中提取行,其中数据位于另一个数据帧的两行之间

PHP 精确匹配一个字符串

python - numpy argmin 不返回 pandas 对象上的整数

python - 使用 Pandas 替换不同列的元素

java - 在文本文件中搜索多行字符串

java - 解释一下String类中重写的equal方法