从列表创建Pandas dataFrame,同时保留数据类型

时间:2017-05-06 02:44:05

标签: python list pandas dataframe

我是使用pandas和python的新手。我正在从以下列表中创建一个新的数据框:

countries = ['Russian Fed.', 'Norway', 'Canada', 'United States',
             'Netherlands', 'Germany', 'Switzerland', 'Belarus',
             'Austria', 'France', 'Poland', 'China', 'Korea', 
             'Sweden', 'Czech Republic', 'Slovenia', 'Japan',
             'Finland', 'Great Britain', 'Ukraine', 'Slovakia',
             'Italy', 'Latvia', 'Australia', 'Croatia', 'Kazakhstan']

gold = [13, 11, 10, 9, 8, 8, 6, 5, 4, 4, 4, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0]
silver = [11, 5, 10, 7, 7, 6, 3, 0, 8, 4, 1, 4, 3, 7, 4, 2, 4, 3, 1, 0, 0, 2, 2, 2, 1, 0]
bronze = [9, 10, 5, 12, 9, 5, 2, 1, 5, 7, 1, 2, 2, 6, 2, 4, 3, 1, 2, 1, 0, 6, 2, 1, 0, 1]

我拥有的是:

a = np.array( [a, g, s, b] ).T
labels = ['countries', 'gold', 'silver', 'bronze']
df = pd.DataFrame.from_records(a, columns = labels) 

它可以工作,但最后3列显示为字符串而不是整数。有没有更好的方法来构造数据框,而最后3列是推断的int而不必在创建数据帧后将它们转换为int?感谢

1 个答案:

答案 0 :(得分:1)

您可以从字典构造数据框,其中值是列表,键是标签/列:

df = pd.DataFrame({'countries': countries, 'gold': gold, 'silver': silver, 'bronze':bronze})

df.dtypes

#bronze        int64
#countries    object
#gold          int64
#silver        int64
#dtype: object