删除列行中除字母以外的所有字符

2024-04-20 14:28:54 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个数据集,在这些数据集中的一些列中有列表。第一个关键问题是,实际上有很多列都有这样的列表,其中字符串可以用(';')或(';;')分隔,字符串本身以白名单甚至(';)开头。你知道吗

对于这些问题的某些情况,我实现了以下功能:

g = [';','']
f = []
for index, row in data_a.iterrows():
for x in row['column_1']:
    if (x in g):
        norm = row['column_1'].split(x)
        f.append(norm)
        print(norm)
        else:

实际上它是工作的,但问题是它返回了重复的行,并且无法用其他分隔符解决任务。你知道吗

另一个问题是在我更改了列值的存储方式之后使用虚拟对象:

column_values = data_a['column_1']
data_a.insert(loc=0, column='new_column_8', value=column_values)
dummies_new_win =      pd.get_dummies(data_a['column_1'].apply(pd.Series).stack()).sum(level=0)

我得到的不是40列,而是50或60列。由于这个事实,我不能做一个函数,从列表中删除除字母表以外的所有内容。我想了解如何实现这样的功能,因为相同的字符串含义可以用不同的方式编写:

name-Jack  or name(Jack)  

期望的输出如下所示:

nameJack  nameJack       

Tags: 数据字符串in功能norm列表newfor
2条回答

我不知道我是否理解你,但要删除所有非字母数字,你可以使用简单的正则表达式。你知道吗

示例:

import re
n = '-s;a-d'
re.sub(r'\W+', '', n)

Output:'悲伤'

您可以对熊猫使用str.replace。你知道吗

df = pd.DataFrame({'names': ['name-Jack','name(Jack)']})

df

#         names
# 0   name-Jack
# 1  name(Jack)

df['names'] = df['names'].str.replace('\W+','')

df

#       names
# 0  nameJack
# 1  nameJack

相关问题 更多 >