【发布时间】:2020-08-17 17:03:24
【问题描述】:
我有一个 csv 文件,其中第一列代表数字 ID,一列代表用户 cmets。
ID 列中遗漏了一些 cmets。因此,我假装检查 ID 列中的每一行,如果它不是数字,则复制该行并将其粘贴到 Comments 列中(ID 列中的最后一个 True)。print(clean_order):
web_scraper_order ... 评论
0 1593612265-26203 ... 伦敦是(...)
1 1593612270-26346 ... 我不 (...)
2 1593612265-26217 ...以及(...)
3 1593612290-26579 ... 我唱歌 (...)
4 1593612256-26064 ... 您的第一个 (...)
……………… 第3074章 3075 国家统计局网站为...... NaN
第3076章 3077 查看可以下载的议会网站... ... NaN
第3078章 我真的同意你的观点,这是一个很大的耻辱... ... NaN
clean_order.info():
RangeIndex:3079 个条目,0 到 3078
数据列(共 16 列):
列非空计数 Dtype
0 web_scraper_order 2722 非空对象
1 web-scraper-start-url 2324 非空对象
2 Discussions_Link 2141 非空对象
3 Discussions_Link-href 1940 非空对象
4 分页 1820 非空对象
5 Pagination-href 1757 非空对象
6 Title_Discussion 1720 非空对象
7 已发布 1698 个非空对象
8 Published_Date 1679 非空对象
9 科目 1672 非空对象
10 讨论 1660 非空对象
11 条评论 1653 非空对象
12 Pagination_Comments 520 非空对象
13 Pagination_Comments-href 517 非空对象
数据类型:对象(16)
内存使用量:192.5+ KB
我的代码:
import pandas as pd
clean_order = pd.read_csv('C:/Users/(...)/Page_Clean_test.csv', 'w+', delimiter=';', skiprows=0, low_memory=False)
save_row = 0
for L in range(0, 1500):
if "159361" in clean_order['web_scraper_order'][L]:
save_row = L
else:
clean_order['Comments'][save_row] = clean_order['Comments'][save_row] + clean_order['web_scraper_order'][L]
错误:
Traceback(最近一次调用最后一次):
文件“C:/Users/suiso/PycharmProjects/Teste_SA/Change web_scraper_order.py”,第 12 行,在
如果 clean_order['web_scraper_order'][L] 中的“159361”:
TypeError: 'float' 类型的参数不可迭代
【问题讨论】:
-
所以您的
order列是一个对象,但其中也有np.nans,这可能就是您收到错误的原因 -
当我使用你的代码时,这个错误返回:NameError: name 'np' is not defined。所以,我做了一些研究,意识到我必须做的是:import numpy as np。当我执行代码时,又出现了一个错误:TypeError: object of type 'float' has no len ()
-
我的错应该是
df.web_scraper_order = df.web_scraper_order.fillna('')...不过请检查我的答案 -
适用于
fillna()代码。现在我只需要将剩余的列复制到注释行。例如:column1:“我正在(...)”; column2:在第 915 行到上一个 ID 列中的“它在 (...) 中完成”。 -
我会检查 pandas 中的矢量化解决方案并提供反馈。
标签: python pandas for-loop if-statement