【问题标题】:How to join columns in CSV files using Pandas in Python如何在 Python 中使用 Pandas 连接 CSV 文件中的列
【发布时间】:2020-09-19 01:39:04
【问题描述】:

我有一个 CSV 文件,看起来像这样:

# data.csv (this line is not there in the file)
Names, Age, Names
John, 5, Jane
Rian, 29, Rath

当我在 Python 中通过 Pandas 阅读它时,我会得到如下信息:

import pandas as pd

data = pd.read_csv("data.csv")
print(data)

而程序的输出是:

  Names   Age  Names
0  John     5   Jane
1  Rian    29   Rath

有什么办法可以得到:

  Names   Age  
0  John     5   
1  Rian    29   
2  Jane
3  Rath

【问题讨论】:

    标签: python python-3.x pandas dataframe csv


    【解决方案1】:

    首先,我建议为每一列使用唯一的名称。要么进入 csv 文件并更改列标题的名称,要么在 pandas 中这样做。

    使用'Names2'作为第二次出现相同列名的列的标题,试试这个:

    datalist = [['John', 5, 'Jane'], ['Rian', 29, 'Rath']]
    df = pd.DataFrame(datalist, columns=['Names', 'Age', 'Names2'])
    

    我们有

      Names  Age Names
    0  John    5  Jane
    1  Rian   29  Rath
    

    所以,使用:

    dff = pd.concat([df['Names'].append(df['Names2'])
                                        .reset_index(drop=True), 
                     df.iloc[:,1]], ignore_index=True, axis=1)
                    .fillna('').rename(columns=dict(enumerate(['Names', 'Ages'])))
    

    得到你想要的结果。

    由内而外:
    df.append 合并列。
    pd.concat( ... )df.append 的结果与数据帧的其余部分相结合。

    要了解其他命令的作用,我建议将它们一一删除并查看结果。

    请原谅dff 的格式。我试图从教育的角度讲清楚一切。 调整缩进以便代码编译。

    【讨论】:

      【解决方案2】:

      您可以使用:
      usecols,这有助于仅读取选定的列。
      low_memory 用于在内部分块处理文件。

      import pandas as pd
      
      data = pd.read_csv("data.csv", usecols = ['Names','Age'], low_memory = False))
      print(data)
      
      

      请在您的 csv 中使用唯一的列名

      【讨论】:

      • 这个答案没有解决第 3 列的问题。没有一列被称为 col1col2
      • 我想我没有正确解释。 col1 和 col2 是列名。在您的情况下,在代码中分别将 col1、col2 替换为 Names、Age。在您的情况下,列名“名称”重复两次,将其中一个更改为具有唯一的列名。我也更新了我的答案。
      猜你喜欢
      • 2019-05-19
      • 1970-01-01
      • 2017-07-15
      • 2021-04-17
      • 2018-06-14
      • 1970-01-01
      • 2021-01-23
      • 1970-01-01
      • 2021-06-03
      相关资源
      最近更新 更多