pandas 为什么pivot_table不能是非数值列?

ijxebb2r  于 2023-08-01  发布在  其他
关注(0)|答案(1)|浏览(121)

我正在尝试这个代码

df_aggregated[['modeWinddirectiondiscrete','CAMPAÑA', 'ID_ESTACION','Month']].pivot_table(index=['CAMPAÑA', 'ID_ESTACION'], columns='Month')

字符串
其中列“modeWinddirectiondiscrete”具有像“北、西、南、东……”
我得到的结果就是索引。我用其他数字列尝试了它,效果很好,所以问题是该列有字符串。是否有可能有一个正确的解决方案与字符串?还是需要把方向转换成数字
编辑:例如我有这张table

mode  modeWinddirectiondiscrete  CAMPAÑA  ID_ESTACION  Month
    0                     South       16            0      1
    1                     North       16            0      1
    2                     North       16            0      1
    3                     East        16            0      2
    4                     West        16            0      2
    5                     East        16            0      2
    6                     South       17            1      3
    7                     West        17            1      3
    8                     North       17            1      3
    9                     West        17            1      3


我想要的是:

DewpointLocalDayAvg
              Month   1   10   11   12   2   3   4   5   6   7   8   9
CAMPAÑA ID_ESTACION
     16           0 North .............East...........................
     17           1 .......................West.......................


结果一定是这样的,我不知道这个例子是否很好理解。

sg24os4d

sg24os4d1#

那这个呢

import pandas as pd

# toy dataset
data = {
    'modeWinddirectiondiscrete': ['North', 'South', 'East', 'West', 'North'],
    'CAMPAÑA': [1, 1, 2, 2, 3],
    'ID_ESTACION': [1, 2, 1, 2, 3],
    'Month': ['January', 'February', 'January', 'February', 'January']
}

df_aggregated = pd.DataFrame(data)

# turn modeWinddirectiondiscrete into categorical data (equivalent of factors in R)
df_aggregated['modeWinddirectiondiscrete'] = pd.Categorical(df_aggregated['modeWinddirectiondiscrete'], categories=['North', 'South', 'East', 'West'])

df_aggregated.pivot_table(index=['CAMPAÑA', 'ID_ESTACION'], columns='Month', values='modeWinddirectiondiscrete', aggfunc='first')

个字符
如果这对实际数据不起作用,请告诉我,我会更新它:-)
更新:ouroboros 1很有帮助地指出,你的代码的问题是pivot_table defaults to aggregating values using their mean,这对分类数据没有任何意义,因为类别不对应于可以平均的数字。
请阅读此处,了解有关数据类型以及可对它们执行的操作的更多信息。

相关问题