Python 3.4,使用panda创建DataFrame时出错

时间:2014-08-05 19:08:55

标签: python pandas dataframe

我尝试使用以下内容创建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)

当我运行程序时,我收到以下错误:'数据类型不能成为迭代器' 我阅读了以下内容,' What does the "yield" keyword do in Python?'但我不明白这是如何适用于我正在做的事情。任何帮助和进一步的理解将不胜感激。

2 个答案:

答案 0 :(得分:1)

在python 3中,zip返回一个迭代器,而不是像python 2中那样的列表。只需在构造DataFrame时将其转换为列表,就像这样。

df = DataFrame(list(BabyDataSet), columns = ['Names', 'Births'] )

答案 1 :(得分:1)

您还可以使用替代语法创建数据框,以完全避免zip / generator问题。

df = DataFrame({'Names': names, 'Births': births})

在初始化数据帧时阅读documentation。 Pandas只需获取字典,为每个条目创建一列,其中键作为名称,值作为值。

  

Dict可以包含系列,数组,常量或类似列表的对象