我有以下Pandas 数据框:

city,temp,real_feel
Los Angeles,0.97,-4.05
London,2.34,-3.18
Amsterdam,6.05,1.63
Rome,4.59,1.29
Lisabon,15.48,15.15
Berlin,2.38,-1.65

我在try 一些关键的 Select ,但我不能让它发挥作用. 如何将其转换为此形状:

city,type,value
Los Angeles,temp,0.97
Los Angeles,real_feel,-4.05
London,temp,,2.34
London,real_feel,-3.18
Amsterdam,temp,6.05
Amsterdam,real_feel,1.63
Rome,temp,4.59
Rome,real_feel,1.29
Lisabon,temp,15.48
Lisabon,real_feel,15.15
Berlin,temp,2.38
Berlin,real_feel,-1.65

推荐答案

没有融化

new_df = df.rename_axis(columns='type').set_index('city')\
           .stack().reset_index(name='value')



           city       type  value
0   Los Angeles       temp   0.97
1   Los Angeles  real_feel  -4.05
2        London       temp   2.34
3        London  real_feel  -3.18
4     Amsterdam       temp   6.05
5     Amsterdam  real_feel   1.63
6          Rome       temp   4.59
7          Rome  real_feel   1.29
8       Lisabon       temp  15.48
9       Lisabon  real_feel  15.15
10       Berlin       temp   2.38
11       Berlin  real_feel  -1.65

如果您使用MELET,则可以传递ignore_index=False,以便在使用SORT_INDEX对熔化后的新数据帧进行排序(如果您没有传递IGNORE_INDEX=FALSE DataFrame.MELET将创建一个新索引,您将丢失原始索引,因此您将无法使用).我们在SORT_INDEX中传递IGNORE_INDEX=True,以按原始索引对行进行排序,但创建新的范围索引(0,1,2,.)

new_df = df.melt('city', var_name='type', ignore_index=False)\
           .sort_index(ignore_index=True)
print(new_df)


           city       type  value
0   Los Angeles       temp   0.97
1   Los Angeles  real_feel  -4.05
2        London       temp   2.34
3        London  real_feel  -3.18
4     Amsterdam       temp   6.05
5     Amsterdam  real_feel   1.63
6          Rome       temp   4.59
7          Rome  real_feel   1.29
8       Lisabon       temp  15.48
9       Lisabon  real_feel  15.15
10       Berlin       temp   2.38
11       Berlin  real_feel  -1.65

Python-3.x相关问答推荐

替换Pandas中组下的列值

Django内置注销视图`不允许的方法(GET):/USERS/LOGOUT/`

Python根据条件从多行读取值

如何使用Selenium从网站下拉菜单中获取值列表?

基于其他列的条件向Panda数据框中添加值到新列

如何将列表和字典逐行组合在一起

提高时间复杂度的一些建议

为什么 mypy 不适用于 sqlalchemy?

Pandas matplotlib:条形图占总数的百分比

将两列合并为一列,将它们制成字典 - pandas - groupby

有没有办法使用 python opencv 计算与图像的白色距离

是否可以将多个 if 转换为数组?

如何将虚拟变量列转换为多列?

使用一周的特定第一天将每日日期转换为每周

Python 解包运算符 (*)

为什么 2to3 将 mydict.keys() 更改为 list(mydict.keys())?

如何找出从哪个模块导入名称?

在 Ubuntu 上为 Python3 安装 mod_wsgi

用于 unicode 大写单词的 Python 正则表达式

有没有一种标准方法来确保 python 脚本将由 python2 而不是 python3 解释?