【问题标题】:Series to Dataframe conversion with column indexing使用列索引将系列转换为数据框
【发布时间】:2016-08-01 13:13:41
【问题描述】:

有一个名为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']

【问题讨论】:

  • D1 = location_ratings.to_frame().reset_index() 不起作用吗?
  • 你为什么要转置?

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


【解决方案1】:

您可以先通过rename_axis(pandas0.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

【讨论】:

    【解决方案2】:
    D1 = location_ratings.rename_axis('Location').reset_index(name='Ratings')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-14
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 2019-02-19
      相关资源
      最近更新 更多