使用列索引进行系列到数据帧转换

时间:2016-08-01 13:13:42

标签: python python-3.x pandas dataframe multiple-columns

有一个名为location_ratings的系列如下:

location_ratings = location['Location'].value_counts()

以下是location_ratings的示例输出:

 Location
 Brazil                                       180
 Alaska                                       175
 Russia                                       171
 Colombia                                     146
 Canada                                       144
 California                                   142
 France                                       130
 England                                      104
 India                                         97
 Indonesia                                     84
 China                                         83

有2个值,一个是位置,另一个是数值(评级)。

我想将它们分成两个新列,一个应该是'位置'另一个应该是'评级'在数据框中。

我尝试将系列转换为数据帧,然后使用下面的代码重置索引,但未能获得预期的结果。

尝试失败1:

D1 = location_ratings.to_frame().reset_index().T

尝试失败2:

D1 = location_ratings.to_frame().
D1.columns = ['Location', 'Ratings']

2 个答案:

答案 0 :(得分:0)

您可以先按rename_axis更新索引名称(pandas 0.18.0中的新内容),然后reset_index

location = pd.DataFrame({'Location': {0: 'Brazil', 1: 'Brazil', 2: 'Brazil', 3: 'Brazil', 4: 'Brazil', 5: 'Alaska', 6: 'Alaska', 7: 'Alaska', 8: 'Alaska'}})
print (location)
  Location
0   Brazil
1   Brazil
2   Brazil
3   Brazil
4   Brazil
5   Alaska
6   Alaska
7   Alaska
8   Alaska

location_ratings = location['Location'].value_counts().rename_axis('Location')
print (location_ratings)
Location
Brazil    5
Alaska    4
Name: Location, dtype: int64

D1 = location_ratings.reset_index(name='Ratings')
print (D1)
  Location  Ratings
0   Brazil        5
1   Alaska        4

另一种分配新列名称的解决方案:

D1 = location_ratings.reset_index()
D1.columns = ['Location', 'Ratings']
print (D1)
  Location  Ratings
0   Brazil        5
1   Alaska        4

答案 1 :(得分:0)

D1 = location_ratings.rename_axis('Location').reset_index(name='Ratings')