我尝试使用以下内容创建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?'但我不明白这是如何适用于我正在做的事情。任何帮助和进一步的理解将不胜感激。
答案 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可以包含系列,数组,常量或类似列表的对象