如何将列从一个 CSV 文件复制到另一个 CSV 文件?

Posted

技术标签:

【中文标题】如何将列从一个 CSV 文件复制到另一个 CSV 文件?【英文标题】:How do I copy columns from one CSV file to another CSV file? 【发布时间】:2022-01-04 03:01:04 【问题描述】:

我有一个 input.csv 文件,我只想将呼叫电话为 92 的那些行复制到 output.csv 文件中。

这就是 input.csv 的样子

calling phone;receiving phone;date;price
49;45;2020-11-08;12
65;39;2020-06-21;8
40;35;2020-01-10;4
28;56;2020-07-19;10
46;68;2020-08-22;14
65;92;2020-05-28;1
11;12;2020-07-11;11
70;76;2020-02-16;15
92;88;2020-04-24;0
92;84;2021-01-19;19
45;76;2020-03-17;11
78;67;2020-08-11;2

【问题讨论】:

加载到 Excel,按第一列排序,删除不需要的行并保存。 10 秒。 【参考方案1】:

你可以这样做

import pandas as pd

df = pd.read_csv("input.csv", delimiter=";")

output = df.where(df["calling phone"] == 92).dropna()

output.to_csv("output.csv", sep=";")

代码的作用是它使用 pandas 导入 .csv 文件,过滤文件中与您要查找的编号匹配的行,然后将其导出到另一个 .csv 文件。

您也可以直接使用正则表达式实现相同的目标,但我想这会使事情复杂化一点。希望对您有所帮助。

【讨论】:

【参考方案2】:

你可以像这样用纯 Python 做到这一点:

import csv


out = []
with open("input.csv", newline="") as csvfile:
    reader = csv.reader(csvfile, delimiter=";")
    # Get the header.
    out.append(next(reader))
    for row in reader:
        if row[0] == "92":
            out.append(row)


with open("out.csv", "w", newline="") as csvfile:
    writer = csv.writer(csvfile, delimiter=";")
    writer.writerows(out)

这是运行该脚本后的out.csv

calling phone;receiving phone;date;price
92;88;2020-04-24;0
92;84;2021-01-19;19

【讨论】:

以上是关于如何将列从一个 CSV 文件复制到另一个 CSV 文件?的主要内容,如果未能解决你的问题,请参考以下文章

将 MySQL 查询结果保存到 CSV 文件

在 sqlite3 中:将列从一个表复制到另一个表

PostgreSQL,试图将日期列从 csv 文件复制到表的列

将列从一个DataFrame复制到另一个DataFrame会产生NaN值吗?

基于唯一对组合将列从一个文件合并到另一个文件

如何跳过 CSV 文件的列