猿问

在 Python 中从数据帧中的列表中删除间距

我有一个包含字符串列表的数据帧,我需要删除每个列表中的空格:


ID        numbers

0      [ 1, 2,3, 4]

1      [ abc, zzy]

2      [ zz12, 22wq, 78]

如何删除“数字”字段中的间距?


ID        numbers

0      [1,2,3,4]

1      [abc,zzy]

2      [zz12,22wq,78]

这是我尝试过的:


# remove spacing

df['numbers'] = df['numbers'].replace({' ':''}, regex=True)

但它似乎不起作用!


aluckdog
浏览 94回答 3
3回答

人到中年有点甜

使用内置的分解方法。df = pd.DataFrame({'ID': [0, 1, 2], 'numbers': [[' 1', '2','3',' 4'], [' abc',' zzy'], [' zz12',' 22wq',' 78']]})temp = df.explode('numbers')temp['numbers'] = temp.numbers.str.strip()temp.groupby('ID', as_index=False).agg(list)   ID           numbers0   0      [1, 2, 3, 4]1   1        [abc, zzy]2   2  [zz12, 22wq, 78]请注意,列表中的每个逗号后面仍然有一个空格,因为这是 IDE 格式化所有列表的方式,但是列表中的每个字符串项都已从中删除所有空格。

翻过高山走不出你

如果值的类型为“[1,2,3]”而不是[1,2,3],即列表:df['numbers']=df['numbers'].transform(lambda val:str(val).replace(' ',''))但这会使你的列 str 类型。如果要将值作为列表返回,则 df['numbers']=df['numbers'].transform(lambda val: [x for x in ini_list.strip('] [').replace(',','').split(' ')]) 这将返回值作为列表元素

临摹微笑

使用表达式:lambdadf['numbers'] = df['numbers'].apply(lambda x : [str(y).strip() for y in x])   ID           numbers0   0      [1, 2, 3, 4]1   1        [abc, zzy]2   2  [zz12, 22wq, 78]
随时随地看视频慕课网APP

相关分类

Python
我要回答