如何将列从一个 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 文件?的主要内容,如果未能解决你的问题,请参考以下文章
PostgreSQL,试图将日期列从 csv 文件复制到表的列