Python 3.4,创建pandas DataFrame时出错
我正在尝试创建一个数据框,内容如下:
from pandas import DataFrame, read_csv
import matplotlib.pyplot as plt
import pandas as pd
import sys
# The inital set of baby names and birth rates
names =['Bob','Jessica','Mary','John','Mel']
births = [968, 155, 77, 578, 973]
#Now we wil zip them together
BabyDataSet = zip(names,births)
##we have to add the 'list' for version 3.x
print (list(BabyDataSet))
#create the DataFrame
df = DataFrame(BabyDataSet, columns = ['Names', 'Births'] )
print (df)
但是当我运行程序时,出现了一个错误:'数据类型不能是迭代器'。我看过以下内容,'Python中的"yield"关键字有什么用?',但我不太明白这和我正在做的事情有什么关系。希望能得到一些帮助和进一步的理解。
2 个回答
1
你还可以用另一种方式来创建数据框,这种方式完全避免了zip或生成器的问题。
df = DataFrame({'Names': names, 'Births': births})
可以查看一下关于如何初始化数据框的文档。Pandas会把字典里的内容拿过来,为每个键创建一列,键的名字就是列名,值就是列里的值。
字典可以包含序列、数组、常量或类似列表的对象。
1
在Python 3中,zip
返回的是一个迭代器,而不是像Python 2那样返回一个列表。你只需要在创建DataFrame的时候把它转换成列表,像这样做就可以了。
df = DataFrame(list(BabyDataSet), columns = ['Names', 'Births'] )