python - pandas Wide_to_long IndexError 是什么意思?

标签 python pandas dataframe

我在使用 pd.wide_to_long() 方法将数据从宽格式转换为长格式时遇到问题。错误内容为 IndexError: Too muchlevels: Index has only 1 level, not 2

我的代码:

import pandas as pd

df = pd.read_csv('data/data.csv', index_col=False)
print(df)


df.reset_index(inplace=True,drop=True)
df['ID'] = df.index
pd.wide_to_long(df, ['OT_', 'NT_'], i='ID', j=['MISS', 'HIT', 'CR', 'FA']).reset_index().rename(columns={'OT_': 'OT', 'NT_': 'NT'})

CSV(只是垃圾数据):

PID,OT_MISS,OT_HIT,OT_CR,OT_FA,NT_MISS,NT_HIT,NT_CR,NT_FA
111,0.1,0.23,0.56,0.11,0.9,1.0,0.92,0.68
121,0.1,0.23,0.56,0.11,0.9,1.0,0.92,0.68
212,0.1,0.23,0.56,0.11,0.9,1.0,0.92,0.68
321,0.1,0.23,0.56,0.11,0.9,1.0,0.92,0.68
423,0.1,0.23,0.56,0.11,0.9,1.0,0.92,0.68
534,0.1,0.23,0.56,0.11,0.9,1.0,0.92,0.68
621,0.1,0.23,0.56,0.11,0.9,1.0,0.92,0.68
721,0.1,0.23,0.56,0.11,0.9,1.0,0.92,0.68
812,0.1,0.23,0.56,0.11,0.9,1.0,0.92,0.68
922,0.1,0.23,0.56,0.11,0.9,1.0,0.92,0.68

最佳答案

在panda中,您可以使用melt()函数将数据从宽格式转换为长格式,如下所示:

df2=pd.melt(df, ['OT_', 'NT_'], i='ID', j=['MISS', 'HIT', 'CR', 'FA']).reset_index().rename(columns={'OT_': 'OT', 'NT_': 'NT'})

关于python - pandas Wide_to_long IndexError 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59889509/

相关文章:

python - 除非导入,否则 distutils.spawn 不可用

python - 当结果不匹配时,pandas 合并如何将默认 Nan 设置为 0

python - 将两列合并为一列

python - 为什么这个简单的 Python 脚本会显示错误答案?

python - Chrome 的 Selenium 驱动程序在 Python 中抛出 WebDriverException

python - 如何列出 ALTabletService 和其他服务的所有隐藏方法?

python - 使用 DataFrame 索引日期创建日期列

python - Python中的高维数据结构

python - Pandas Dataframe - 条件列创建

在指定的时间间隔运行 R 脚本