【问题标题】:How to merge two columns into one in csv format (Python Pandas)?如何以 csv 格式(Python Pandas)将两列合并为一列?
【发布时间】:2016-06-27 08:49:52
【问题描述】:

我从 html 中抓取了一个表格并将其解析为一个 csv 文件。然而,网络上表格的格式在中间发生了变化,但它们并没有更新前面的行,因此不推荐使用某些列。看起来像这样:

红框中的两列已弃用,应将其删除,而右侧的两列应替换它们。我将如何在 Pandas 中执行此操作?

爬取后的 csv 文件如下所示:

简而言之,我想从某一行删除一些列,然后替换它们。

【问题讨论】:

    标签: python csv pandas


    【解决方案1】:

    我也遇到过类似的问题,在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)
    

    【讨论】:

    • 预期列数应该是截断后的列数?编辑:nvm 它应该是原来的。
    • 是的,A 存储格式正确的 csv 部分(请注意,此代码仅在您有两种格式时才有效,否则您必须添加其他 if 条件)。
    猜你喜欢
    • 2023-02-02
    • 2019-03-15
    • 2020-11-08
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多