如何从Pandas Dataframe 的列表中删除特定字符/空格?

qxsslcnc  于 2023-03-16  发布在  其他
关注(0)|答案(1)|浏览(246)

我使用以下代码将CSV文件读取为DataFrame:

import pandas as pd
from ast import literal_eval

df = pd.read_csv('listing.csv')

我删除了DataFrame中不包含描述的所有行,并重置了索引:

no_description = df['Description'].isna()
descriptions = df[~no_description].reset_index()

其中一行偏移了一个空格,所以我必须通过以下代码将其向左移动一个空格:

descriptions.iloc[538, -17:] = descriptions.iloc[538, -17:].shift(-1)

问题是,包含描述的列看起来像列表,但它被作为字符串读取。下面是DataFrame行的示例:
| 索引|类别|职务|说明|
| - ------|- ------|- ------|- ------|
| 1个|树屋|红鸢树帐篷|['关于这个空间','在树木园','在卡巴内\n\n']|
| 第二章|树屋|自然小屋|['关于这个空间','大自然无处不在\n\nA','树屋放纵,放松和去没有人会去']|
我使用literal_eval将描述转换为列表。

df['Description'] = df['Description'].apply(literal_eval)

我不得不这样做,以删除列表中列中所有行的第一项“关于这个空间”,我使用切片来实现这一点。

descriptions['Description'] = descriptions['Description'].str[1:]

现在,问题是这个列表中包含了一些空格('\n'),如果我把这个列表加入到一个字符串中,这会导致数据中有很多空格和换行符。
我试过使用.strip().replace()甚至一些lambda函数来删除空格,但似乎都不起作用。

descriptions['Description'] = descriptions['Description'].str.replace('\n', '')

这将导致返回'nan'
解决这个问题最简单的方法是什么?

ac1kyiln

ac1kyiln1#

我能够得到替换工作使用。应用:

df['Description'].apply(lambda x: list(map(lambda val: val.replace("\n", ""), x)))

我相信您获得'nan'值的原因是,在使用字符串函数时,它仍然将您进行的初始调用视为列表。

相关问题