简体   繁体   中英

How to read data from csv file if all the values are in the same column?

I have a csv file in the following format:

"age","job","marital","education","default","balance","housing","loan"
58,"management","married","tertiary","no",2143,"yes","no"
44,"technician","single","secondary","no",29,"yes","no"

However, instead of being separated by tabs (different columns), they all lie in the same first column. When I try reading this using pandas, the output gives all the values in the same list instead of a list of lists.

My code:

dataframe = pd.read_csv("marketing-data.csv", header = 0, sep= ",")
dataset = dataframe.values
print(dataset)

O/p:

[[58 'management' 'married' ..., 2143 'yes' 'no']
 [44 'technician' 'single' ..., 29 'yes' 'no']]

What I need:

[[58, 'management', 'married', ..., 2143, 'yes', 'no']
 [44 ,'technician', 'single', ..., 29, 'yes', 'no']]

What is it I am missing?

I think you are confused by the print() output which doesn't show commas.

Demo:

In [1]: df = pd.read_csv(filename)

Pandas representation:

In [2]: df
Out[2]:
   age         job  marital  education default  balance housing loan
0   58  management  married   tertiary      no     2143     yes   no
1   44  technician   single  secondary      no       29     yes   no

Numpy representation:

In [3]: df.values
Out[3]:
array([[58, 'management', 'married', 'tertiary', 'no', 2143, 'yes', 'no'],
       [44, 'technician', 'single', 'secondary', 'no', 29, 'yes', 'no']], dtype=object)

Numpy string representation (result of print(numpy_array) ):

In [4]: print(df.values)
[[58 'management' 'married' 'tertiary' 'no' 2143 'yes' 'no']
 [44 'technician' 'single' 'secondary' 'no' 29 'yes' 'no']]

Conclusion: your CSV file has been parsed correctly.

I don't really see a difference between what you want and what you get.. but parsing the csv file with the built in csv module give your desired result

import csv
with open('file.csv', 'rb') as csvfile:
     spamreader = csv.reader(csvfile, delimiter=',', quotechar='|')
     print list(spamreader)

[

['age', 'job', 'marital', 'education', 'default', 'balance', 'housing', 'loan'],

['58', 'management', 'married', 'tertiary', 'no', '2143', 'yes', 'no'],

['44', 'technician', 'single', 'secondary', 'no', '29', 'yes', 'no']

]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM