![](/img/trans.png)
[英]Read single column from csv file and rename with the name of the text file
[英]Import multiple CSV files, select 1 Column from each file & rename the column with the file name in Jupyter Noteboos
我試着從這個kaggle鏈接導入CSV 100個文件- https://www.kaggle.com/natehenderson/nate-s-cryptocurrency-analysis/data
每個文件都包含不同加密貨幣的歷史信息。
每個文件如下所示:
對於當前的分析,我只需要每個文件的市值列以及帶有時間戳的索引。
因此,對於每個文件,唯一需要的列就是市值。 然后,我需要追加每列並用文件名替換該列的名稱。
最終結果應如下所示:
如果每列包含市值和粗略值,則每個值應與索引相對應,並且該列的名稱應與csv文件的名稱相同。
有什么想法我該怎么做?
以下內容將幫助您入門。 假設您有一個包含所有CSV文件的文件夾,並且每個CSV文件都具有相同的格式,即:
Date,Open,High,Low,Close,Volume,Market Cap
"Sep 22, 2017",1.23,1.25,1.14,1.24,513898,12916700
"Sep 23, 2017",1.28,1.35,1.18,1.23,1700200,13448400
在嘗試水平寫入數據時,需要先將所有數據收集到內存中,然后才能進行寫入。 該腳本一次讀取每個文件,並將每一行分配給字典的字典。 第一個包含date
,第二個包含具有該日期條目的所有貨幣。 該date
將轉換為datetime
對象,以確保在寫入輸出CSV文件時可以對它們進行正確排序。 讀取每個文件時,其名稱存儲在一個集中,以便可以使用貨幣名稱的確定列表。
為了輸出,貨幣名稱被排序,並且DictWriter
用於保存所有值。 這具有為任何丟失的數據存儲空值的好處:
from collections import defaultdict
from operator import itemgetter
from datetime import datetime
import csv
import glob
import os
req_cols = itemgetter(0, 6)
all_data = defaultdict(dict)
currencies = set()
date_format1 = '%b %d, %Y' # e.g. "Sep 22, 2017"
date_format2 = '%B %d, %Y' # e.g. "June 22, 2017"
for csv_filename in glob.glob('*.csv'):
with open(csv_filename, newline='') as f_input:
currency_name = os.path.splitext(os.path.basename(csv_filename))[0]
csv_input = csv.reader(f_input)
header = next(csv_input)
currencies.add(currency_name)
for row in csv_input:
date, market_cap = req_cols(row)
try:
date = datetime.strptime(date, date_format1)
except ValueError: # Try "June 22, 2017"
date = datetime.strptime(date, date_format2)
all_data[date][currency_name] = market_cap
currencies = sorted(currencies)
with open('output.csv', 'w', newline='') as f_output:
header = ['Date'] + currencies
csv_output = csv.DictWriter(f_output, fieldnames=header)
csv_output.writeheader()
for date, entries in sorted(all_data.items()):
entries['Date'] = date.strftime(date_format1)
csv_output.writerow(entries)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.