【问题标题】:How to use 2 columns in an index in Python?如何在 Python 的索引中使用 2 列?
【发布时间】:2020-12-28 08:56:18
【问题描述】:

我曾经让这段代码正常工作

df_features = df_features.pivot(index='RepID', columns='Customer', values='Frequency')

但数据框已更改并变为 2 个键而不是 1 个

所以我把它改成如下

df_features = df_features.pivot(index=['RepID', 'CountryID'], columns='Customer', values='Frequency')

但这会产生这个错误

ValueError: 传递值的长度是 60466,索引意味着 2。

如何解决此错误

样本数据

101 201 Ali 33
101 201 Tom 44
101 202 Kin 11
101 202 Tom 55
102 201 May 58
102 201 Kin 38
103 201 Tom 98

【问题讨论】:

  • 如何传递一些示例数据。
  • @xcodz-dot 提供
  • 尝试传递实际列而不是列名:df_features.pivot(index=df_features[['RepID', 'CountryID']], columns='Customer', values='Frequency')
  • @ayhan 不起作用

标签: python dataframe pivot


【解决方案1】:

我不确定您期望的结果,但我认为数据透视表可以完成这项工作:

import pandas as pd
import numpy as np


data={'RepID':[101,101,101,101,102,102,103,103],
    'CountryID':[201,201,202,202,201,201,201,201],
    'Customer':['Ali','Tom','Kin','Tom','May','Kin','Tom','Tom'],
    'Frequency':[33,44,11,55,58,38,98,10000]}

df_features=pd.DataFrame(data)

#df_features = df_features.pivot(index=['RepID', 'CountryID'], columns='Customer', values='Frequency')
df_features = pd.pivot_table(data=df_features,index=['RepID', 'CountryID'], columns='Customer', values='Frequency',aggfunc=np.sum,fill_value=0)

print(df_features)

结果:

Customer         Ali  Kin  May    Tom
RepID CountryID
101   201         33    0    0     44
      202          0   11    0     55
102   201          0   38   58      0
103   201          0    0    0  10098

【讨论】:

    猜你喜欢
    • 2019-12-23
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2021-01-23
    • 2019-11-14
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多