python - Python pandas Dataframe 列到行操作
问题描述
我试图在保留其他列的同时转置几列。我很难使用数据透视码或转置码,因为它并没有真正给我所需的输出。
任何人都可以帮忙吗?
我有这个数据框:
企业标识 | 目标 | 第 1 周 | 第 2 周 | 第 3 周 | 第 4 周 |
---|---|---|---|---|---|
1 | 556 | 54 | 33 | 24 | 54 |
2 | 342 | 32 | 32 | 56 | 43 |
3 | 534 | 43 | 65 | 64 | 21 |
4 | 244 | 45 | 87 | 5 | 22 |
我预期的数据框输出是:
企业标识 | 目标 | 周 | 实际的 |
---|---|---|---|
1 | 556 | 第 1 周 | 54 |
1 | 556 | 第 2 周 | 33 |
1 | 556 | 第 3 周 | 24 |
1 | 556 | 第 4 周 | 54 |
依此类推,直到列出完整的员工 ID。
解决方案
像这样的东西。
# Python - melt DF
import pandas as pd
d = {'Country Code': [1960, 1961, 1962, 1963, 1964, 1965, 1966],
'ABW': [2.615300, 2.734390, 2.678430, 2.929920, 2.963250, 3.060540, 4.349760],
'AFG': [0.249760, 0.218480, 0.210840, 0.217240, 0.211410, 0.209910, 0.671330],
'ALB': ['NaN', 'NaN', 'NaN', 'NaN', 'NaN', 'NaN', 1.12214]}
df = pd.DataFrame(data=d)
print(df)
df1 = (df.melt(['Country Code'], var_name='Year', value_name='Econometric_Metric')
.sort_values(['Country Code','Year'])
.reset_index(drop=True))
print(df1)
df2 = (df.set_index(['Country Code'])
.stack(dropna=False)
.reset_index(name='Econometric_Metric')
.rename(columns={'level_1':'Year'}))
print(df2)
# BEFORE
ABW AFG ALB Country Code
0 2.61530 0.24976 NaN 1960
1 2.73439 0.21848 NaN 1961
2 2.67843 0.21084 NaN 1962
3 2.92992 0.21724 NaN 1963
4 2.96325 0.21141 NaN 1964
5 3.06054 0.20991 NaN 1965
6 4.34976 0.67133 1.12214 1966
# AFTER
Country Code Year Econometric_Metric
0 1960 ABW 2.6153
1 1960 AFG 0.24976
2 1960 ALB NaN
3 1961 ABW 2.73439
4 1961 AFG 0.21848
5 1961 ALB NaN
6 1962 ABW 2.67843
7 1962 AFG 0.21084
8 1962 ALB NaN
9 1963 ABW 2.92992
10 1963 AFG 0.21724
11 1963 ALB NaN
12 1964 ABW 2.96325
13 1964 AFG 0.21141
14 1964 ALB NaN
15 1965 ABW 3.06054
16 1965 AFG 0.20991
17 1965 ALB NaN
18 1966 ABW 4.34976
19 1966 AFG 0.67133
20 1966 ALB 1.12214
Country Code Year Econometric_Metric
0 1960 ABW 2.6153
1 1960 AFG 0.24976
2 1960 ALB NaN
3 1961 ABW 2.73439
4 1961 AFG 0.21848
5 1961 ALB NaN
6 1962 ABW 2.67843
7 1962 AFG 0.21084
8 1962 ALB NaN
9 1963 ABW 2.92992
10 1963 AFG 0.21724
11 1963 ALB NaN
12 1964 ABW 2.96325
13 1964 AFG 0.21141
14 1964 ALB NaN
15 1965 ABW 3.06054
16 1965 AFG 0.20991
17 1965 ALB NaN
18 1966 ABW 4.34976
19 1966 AFG 0.67133
20 1966 ALB 1.12214
另外,请查看下面的链接以获取更多信息。
推荐阅读
- wcf - 使用通道工厂而不是使用代理或添加服务引用来使用外部 WCF 服务
- reactjs - React Boostrap - TypeError:无法读取未定义的属性“bool”
- go - 去继承任务处理
- mysql - 空 LONGTEXT 字符串是否占用 4GB 磁盘空间?
- datetimepicker - 错误:-@ng-bootstrap\ng-bootstrap\datepicker\datepicker-navigation.d.ts.NgbDatepickerNavigation.html
- ruby-on-rails - 如何在一个特定实例的应用程序控制器中覆盖rescue_from
- c++ - 如何使用 SFINAE 检测类型不完整的字段?
- laravel - 将 Laravel 本地化与 Vuejs 结合使用的最佳方法是什么
- asp.net - 如何运行在VS2017中使用Angular CLI开发的Angular应用程序?
- css - Wordpress 按类别名称应用配色方案