我有一个包含 10000 个客户评分的 Excel 文件。每行都是一个评级(第 1 行 = 评级 1;第 2 行 = 评级 2,...)。我将它们导入 Jupyter Notebook 并清理它们。 (词形化、删除停用词、...) 结果如下所示:
print(data_lemmatized[:2])
[ [ ], ["practical", "recommendation"], ["miserable", "confusing"], ... ]
由于某些评分非常短,例如只有一个表情符号,因此此处列表中的列表为空。导出到 Excel 时,不会显示这些空列表。导出后不再是10000行,而是只有9000行。这使得对作者的分配变得不可能。 你能帮我找到一种导出或识别空行的方法吗?
(我尝试在Python中的每个列表中添加一个唯一的字符。例如数字“77777”,它不会出现在任何其他客户评级。但是,此数字仅添加到第一个和所有填充的列表中。)
可以使用多种方法识别或筛选二维列表中的空列表:
1. 列表推导:
这是一种简洁的方法,可以创建一个只包含非空列表的新列表:
data_no_empty = [lst for lst in data_lemmatized if lst]
此代码遍历
data_lemmatized
中的每个列表,如果该列表不为空,则将其添加到
data_no_empty
列表中。
2. 循环和条件语句:
这种方法更详细,可以更好地控制要对空列表执行的操作:
data_cleaned = []
for lst in data_lemmatized:
if lst: # 如果列表不为空
data_cleaned.append(lst)
else:
# 处理空列表,例如:
print("发现一个空列表!")
此代码遍历
data_lemmatized
中的每个列表,如果该列表不为空,则将其添加到
data_cleaned
列表中。否则,它将执行在
else
块中指定的任何操作,例如打印消息或将占位符值添加到新的列表中。
3.
filter
函数:
这种方法利用 Python 内置的
filter
函数来创建只包含非空列表的新列表:
data_no_empty = list(filter(None, data_lemmatized))
此代码使用
filter
函数从
data_lemmatized
列表中删除所有计算结果为
False
的元素(在本例中为空列表)。
导出到 Excel:
使用上述任何方法获取非空列表列表后,可以使用
pandas
库轻松将其导出到 Excel:
import pandas as pd
# ... (使用上述方法之一获取 data_no_empty)
df = pd.DataFrame(data_no_empty)
df.to_excel("cleaned_ratings.xlsx", index=False, header=False)
这将创建一个名为 "cleaned_ratings.xlsx" 的 Excel 文件,其中包含所有非空列表,每行一个列表。
index=False
和
header=False
参数分别用于防止写入索引和标题行。
选择最适合的方法,并将其集成到的代码中以识别和处理空列表。
标签:python,list,jupyter-notebook From: 78780904