我有一个数据框,其中一列用字符串填充。我想从栏中删除任何单个字母的外观。到目前为止,我试过:

df['STRI'] = df['STRI'].map(lambda x: " ".join(x.split() if len(x) >1)

我想输入ABCD X WYZ并得到ABCD WYZ

最佳答案

您可以使用str.replace和regex。模式\b\w\b将用单词边界替换任何单个单词字符。参见下面的工作示例:
使用系列的示例:

s = pd.Series(['Katherine','Katherine and Bob','Katherine I','Katherine', 'Robert', 'Anne', 'Fred', 'Susan', 'other'])

   s.str.replace(r'\b\w\b','').str.replace(r'\s+', ' ')

0            Katherine
1    Katherine and Bob
2            Katherine
3            Katherine
4               Robert
5                 Anne
6                 Fred
7                Susan
8                other
dtype: object

另一个测试数据示例:
    s = pd.Series(['ABCD','X','WYZ'])

0    ABCD
1       X
2     WYZ
dtype: object

s.str.replace(r'\b\w\b','').str.replace(r'\s+', ' ')

0    ABCD
1
2     WYZ
dtype: object

你的数据是:
df['STRI'].str.replace(r'\b\w\b','').str.replace(r'\s+', ' ')

09-07 05:57