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

Python 删除列行中除字母以外的所有字符,python,pandas,Python,Pandas,假设我有一个数据集,在这些数据集的某些列中有列表。第一个关键问题是,实际上有很多列都有这样的列表,其中字符串可以用(“;”)或(“;”)分隔,字符串本身以白名单甚至(“;”)开头 对于这些问题的某些情况,我实现了以下功能: 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

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

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

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       

我不确定我是否理解你的意思,但是要删除所有非字母数字的,你可以使用简单的正则表达式

例如:

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

输出:“sad”

您可以对熊猫
系列使用
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

显示一些示例数据和所需的输出。这会让你的问题更清楚。@Rakesh准备好了,谢谢你的建议)是的,但是如何在包含str列表的pandas列中实现它呢?