【发布时间】:2016-06-27 08:49:52
【问题描述】:
我从 html 中抓取了一个表格并将其解析为一个 csv 文件。然而,网络上表格的格式在中间发生了变化,但它们并没有更新前面的行,因此不推荐使用某些列。看起来像这样:
红框中的两列已弃用,应将其删除,而右侧的两列应替换它们。我将如何在 Pandas 中执行此操作?
简而言之,我想从某一行删除一些列,然后替换它们。
【问题讨论】:
我从 html 中抓取了一个表格并将其解析为一个 csv 文件。然而,网络上表格的格式在中间发生了变化,但它们并没有更新前面的行,因此不推荐使用某些列。看起来像这样:
红框中的两列已弃用,应将其删除,而右侧的两列应替换它们。我将如何在 Pandas 中执行此操作?
简而言之,我想从某一行删除一些列,然后替换它们。
【问题讨论】:
我也遇到过类似的问题,在pandas之外解决了,然后合并了这两种行对应的dataframes:
A = []
B = []
with open(your_file) as f:
for line in f:
if len(line.split(your_separator)) == expected_number_of_columns:
A.append(line.split(your_separator))
else:
B.append(line.split(your_separator))
在这里,您在列表 A 和 B 的两个列表中存储了与您的 csv 文件中的两种格式相对应的行。
A = pd.DataFrame(A,columns = list_of_columns)
B = pd.DataFrame(B,columns = list_of_columns_2).drop(columns_to_drop,1)
df = pd.concat([A,B]).reset_index(drop = True)
【讨论】:
A 存储格式正确的 csv 部分(请注意,此代码仅在您有两种格式时才有效,否则您必须添加其他 if 条件)。