如何在python中将csv文件行拆分为列?

时间:2018-10-23 12:11:40

标签: python

对不起,我是python的新手。我有一个csv文件,该文件从Google趋势获取数据并写入该文件。但是,所有输出均写入同一列。我想要A列上的日期和B列上的比特币以及C列上的货币。我真的在为简单的任务而苦苦挣扎。有人可以帮忙吗?谢谢。

下面是csv文件的示例。

"date   Bitcoin Cryptocurrency  Crypto  isPartial" 
"2013-10-27 5   0   0   False"
"2013-11-03 5   0   0   False"
"2013-11-10 5   0   0   False"
"2013-11-17 12  0   0   False"
"2013-11-24 14  0   0   False"
"2013-12-01 13  0   0   False"

这是我生成文件的代码

#login
pytrend = TrendReq(google_username,google_password)
pytrend = TrendReq()

#Payload
pytrend.build_payload(kw_list=['Bitcoin','Cryptocurrency','Crypto'])

#interest over time
interest_over_time_df = pytrend.interest_over_time()
df = pd.DataFrame(interest_over_time_df)
file_name = "/Users/username/Desktop/Bitcoin.csv"
df.to_csv(file_name, sep='\t')

3 个答案:

答案 0 :(得分:0)

首先,看看python的CSV文档,这应该给您所有info and examples you need

然后,我了解到您想以CSV格式写行,并用制表符分隔,这样对您来说应该可以:

# First you create a csv.Writer
spamwriter = csv.writer(csvfile, delimiter='\t')
# You write a row as a list into the csv.writer
spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])

答案 1 :(得分:0)

我能够从其他帖子中找到一些想法。选项1只是使用格式化使其看起来不错,而选项2利用PrettyTable给出了很好的格式化答案。您可以找到Pretty Table文档here

选项1 来自此previous post。您所要做的就是处理数字,以使空格看起来足够好让您满意,并且当然可以更改文件名以匹配csv文件。

选项1

您可以使用format左对齐您的输出。例如,

f = open("contactlist.csv")
csv_f = csv.reader(f)
for row in csv_f:
    print('{:<15}  {:<15}  {:<20} {:<25}'.format(*row))

输出:

Name             Phone            Company              Email                    
Elon Musk        454-6723         SpaceX               emusk@spacex.com         
Larry Page       853-0653         Google               lpage@gmail.com          
Tim Cook         133-0419         Apple                tcook@apple.com          
Steve Ballmer    456-7893         Developers!          sballmer@bluescreen.com  

您可以在此处阅读有关格式的更多信息。 <符号使文本左对齐,数字指定字符串的宽度。每个{}都可以在冒号:之前包含位置参数-如果省略,则字符串将按参数的顺序出现在未压缩的列表行中。

选项2

选项2 ,我可以在这里Python Pretty Table

找到此信息

此页面为您提供多种解决此问题的方法。使用from_csv()函数包含一种非常简单的方法,该函数可以通过使用from prettytable import from_csv从PrettyTable导入。请看下面的示例以获得更好的见识。

示例: Data.csv

"City name", "Area", "Population", "Annual Rainfall"
"Adelaide", 1295, 1158259, 600.5
"Brisbane", 5905, 1857594, 1146.4
"Darwin", 112, 120900, 1714.7
"Hobart", 1357, 205556, 619.5
"Sydney", 2058, 4336374, 1214.8
"Melbourne", 1566, 3806092, 646.9
"Perth", 5386, 1554769, 869.4

Python代码:

#!/usr/bin/python3

from prettytable import from_csv

with open("data.csv", "r") as fp: 
    x = from_csv(fp)

print(x)

输出将类似于以下内容:

+-----------+------+------------+-----------------+
| City name | Area | Population | Annual Rainfall |
+-----------+------+------------+-----------------+
|  Adelaide | 1295 |  1158259   |      600.5      |
|  Brisbane | 5905 |  1857594   |      1146.4     |
|   Darwin  | 112  |   120900   |      1714.7     |
|   Hobart  | 1357 |   205556   |      619.5      |
|   Sydney  | 2058 |  4336374   |      1214.8     |
| Melbourne | 1566 |  3806092   |      646.9      |
|   Perth   | 5386 |  1554769   |      869.4      |
+-----------+------+------------+-----------------+

请留下评论或投票,让我知道这是否有益,谢谢!

答案 2 :(得分:0)

你去哪里。您需要将熊猫加载到数据框中。

import pandas as pd
dataframe= pd.read_csv('Bitcoin.csv',delimiter=r"\s+")
dataframe

enter image description here