Python 3.4,创建pandas DataFrame时出错

1 投票
2 回答
2396 浏览
提问于 2025-04-18 16:07

我正在尝试创建一个数据框,内容如下:

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'] )

撰写回答