【问题标题】:How to create a single data frame by combining multiple CSV with exact same columns name side by side如何通过并排组合具有完全相同列名的多个 CSV 来创建单个数据框
【发布时间】:2022-01-24 10:15:08
【问题描述】:

我有 3 个具有完全相同列的 csv 文件,我想将它们并排放置在 pandas 数据框中。我还想确保列标题包含文件名,以便我可以识别列来自哪个 CSV。

例如,如果文件名是“file1.csv”并且文件中的标题是 Item、Amount 和 Remarks,我希望最终结果看起来像 Item_file1、Amount_file1、Remarks_file1。这同样适用于 csv 文件 2 和 3。

顺便说一句,每个文件的唯一标识符是索引和Item

【问题讨论】:

  • 请检查How to Ask。到目前为止,您尝试过什么?
  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: python pandas


【解决方案1】:

好吧,这不是一个好主意,你最好有一个列来区分哪个文件数据来自哪个文件。如果您使用的是数据库,则可以在 SQL 查询中使用 CSV,非常简单。

但是我不知道这件事的目的是什么,所以这些步骤可以做到;

我们可以说 CSV 在某种程度上是文本文件。如果你使用 Linux 或者可以使用 WSL2,那就很简单了。否则,只需尝试这些步骤;

  1. CSV 的第一行包含列名,因此您可以抓取它并将其内容按; 拆分以获取标题名称。然后你可以将它存储在数组中。 对所有其他文件执行此操作,并将列名添加到同一数组中。您可以将文件名附加到每个字符串。

  2. 然后将字符串与; 重新连接在一起,并将其保存为结果 CSV 的开头

  3. 现在获取这些文件的其余部分(除第一行之外的所有文件)并将其添加到新文件中。 每个文件都有一个数字(例如 0、1、2),并在文件的每一行前面加上 ; 的确切数字,等于该文件中的列数乘以文件编号(第一个乘以 0,第二个乘以1等)

    文件 1; a;b;c 1;2;3

    文件 2; a;b;c 4;5;6

    文件 3; a;b;c 7;8;9

所以通过这些步骤你会得到

a0;b0;c0;a1;b1;c1;a2;b2;c2;
1;2;3;4;5;6;7;8;9

【讨论】:

    【解决方案2】:

    到目前为止,我只得到了这个,但它给了我错误。我不知道如何将 3 个 csv 文件与所有列并排显示

    将熊猫导入为 pd 导入全局

    path = r'/Users/ameer/Desktop/untitled folder/' # 使用你的路径 all_files = glob.glob(path + "/*.csv")

    li = []

    对于 all_files 中的文件名: df = pd.read_csv(文件名,index_col=None,header=0) li.append(df)

    frame = pd.merge(li, on='Description', how='right') 框架

    【讨论】:

    • 不要用进步(但不是最终解决方案)和进一步的疑问来回答自己的问题。如果您发现它对那些试图回答它的人有价值,请编辑您的问题以附加您的进度。这个答案没有回答问题,所以应该放在问题本身上。
    猜你喜欢
    • 1970-01-01
    • 2012-11-26
    • 2023-01-22
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 2017-04-01
    相关资源
    最近更新 更多