python - pandaswide_to_long,id变量需要唯一标识每一行
问题描述
假设我有一个这样的数据框
ID,Time1,Value1,Time2,Value2,Time3,Value3
1,2,1.1,3,1.2,4,1.3
1,5,2.1,6,2.2,7,2.3
预期的数据框是这个
ID,Time,Value
1,2,1.1
1,3,1.2
1,4,1.3
1,5,2.1
1,6,2.2
1,7,2.3
如果该行具有唯一的 ID,则pd.wide_to_long
在这种情况下可以完美运行。
df = pd.wide_to_long(df, ['Time',Value],'ID','value', sep='', suffix='.+')\
.reset_index()\
.sort_values(['ID', 'Time'])\
.drop('value', axis=1)\
.dropna(how='any')
但是在这种情况下如何解决,如果行的 ID 不是唯一的
解决方案
技巧reset_index
用于唯一值列:
df = (pd.wide_to_long(df.reset_index(), ['Time','Value'],i='index',j='value')
.reset_index(drop=True)
.sort_values(['ID', 'Time'])
.dropna(how='any')
)
print (df)
ID Time Value
0 1 2 1.1
2 1 3 1.2
4 1 4 1.3
1 1 5 2.1
3 1 6 2.2
5 1 7 2.3
详情:
print (pd.wide_to_long(df.reset_index(), ['Time','Value'],i='index',j='value'))
ID Time Value
index value
0 1 1 2 1.1
1 1 1 5 2.1
0 2 1 3 1.2
1 2 1 6 2.2
0 3 1 4 1.3
1 3 1 7 2.3
推荐阅读
- html - 做顺风网格的正确方法?
- json - 从 Kafka 消息中读取的 Json 路径
- javascript - VanillaJS - 在容器中找到中间元素
- ios - 仅当我发布我的应用程序时无法看到 iOS 15 头像
- nlp - 没有代码的通用变压器问题;为什么 img to seq 模型会尝试预测填充?
- python - 有没有办法在 BeautifulSoup 中找到不包含特定类的标签?
- azure-data-explorer - Kusto 计算自上次事件以来的分钟数
- reactjs - 了解我的游轮网站的 React Joins
- python-3.x - 我的 .lower() 和 .upper() 函数不起作用。这里有什么问题?
- amazon-web-services - 有没有办法在自动缩放计划中指定时区?