将行字段名称转换为标题cs

2024-10-01 13:43:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python脚本,它运行在1000个csv文件中,并根据我指定的日期提取行并将它们放入一个新的csv中。在这种情况下,日期等于2017年10月15日。结果文件看起来像csv附加的图像。在

我希望它看起来像一个带有列标题的csv。在

STATION, DATE, LATITUDE, LONGITUDE, ...
USW0003013, 10-15-2017, 36.7876, -105.6434, ...
USW0003016, 10-15-2017, 37.5456, -103.5671, ...

enter image description here

我做了一些搜索,但只找到了从行到列的转换信息,但是由于行中有字段名,所以我认为这行不通。在

下面是我用来从每个csv文件(超过1000个)中提取行的代码,其中的日期是2017年10月15日。在

^{pr2}$

Tags: 文件csv代码图像脚本信息标题date
2条回答

如果要添加自定义头,只需将它们作为第二个参数传递给DictWriter(在本例中,fieldnames等于row.keys())。在

下面是一个例子:

import csv

data = []
for i in range(10):
    data.append({'Date': '10-15-2017', 'LATITUDE': i+30})

with open('csv_with_headers.csv', 'wb') as outcsv:
    writer = csv.DictWriter(outcsv, fieldnames = ["Date", "LATITUDE"])
    writer.writeheader()
    writer.writerows(data)

输出:

^{pr2}$

这可以使用pandas模块轻松完成,如下所示:

import pandas as pd

path = "C:/py-testing/downloads/*.csv"

csv_all = []
for fname in glob.glob(path):
    csv_all.append(pd.read_csv(fname))

df = pd.concat(csv_all)
df = df.loc[df['DATE'] == "2017-10-15"]
#Choose the columns you need
df = df[['STATION', 'DATE', 'LATITUDE', 'LONGITUDE']]
df.to_csv('./csv_merged.csv')

相关问题 更多 >