python - 没有应用功能的 Pandas 数据框的数据透视表

标签 python pandas dataframe

我有一个看起来像这样的 Pandas 数据框:

df = pd.DataFrame({ 'ID' : [2,2,2,2,2,4,4,3,3,3,6] , 'count' : [20,43,45,50,15,65,35,15,15,14,30]})
df
    ID  count
0    2     20
1    2     43 
2    2     45
3    2     50
4    2     15
5    4     65
6    4     35
7    3     15
8    3     15
9    3     14
10   6     30

我想创建一个具有以下输出的数据透视表:

ID    1    2    3    4    5
 2   20   43   45   50   15
 4   65   35    0    0    0
 3   15   15   14    0    0
 6   30    0    0    0    0

我想对数据框使用数据透视函数 (df_pivot = df.pivot(index='ID', columns=..., values='count') 但我缺少列索引列表。我想应用一个对 df 的 lambda 函数生成一个带有缺失列名的附加列,但我有 800M ID,并且对分组数据框的应用函数非常慢。有没有你可能知道的快速方法?

最佳答案

我会为每个组定义一个子索引:

df['subindex'] = df.groupby('ID').cumcount() + 1

然后应用 pivot 方法将新的 subindex 设置为列并用 0 填充 NaN 值:

d = pd.pivot_table(df,index='ID',columns='subindex',values='count').fillna(0)

返回:

subindex   1   2   3   4   5
ID                          
2         20  43  45  50  15
3         15  15  14   0   0
4         65  35   0   0   0
6         30   0   0   0   0

希望对您有所帮助。

关于python - 没有应用功能的 Pandas 数据框的数据透视表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32651084/

相关文章:

python从内存中加载带有模块的zip

python - 使用 Python 在 Windows Media Player 中排队并播放 .mp3 文件夹

scala - 用平均值替换缺失值 - Spark Dataframe

python - 如何根据 id 外部合并 3 个或更多数据集并使用一列进行比较?

python - 计算 nd 数组中相同子数组的最快方法?

python - Matplotlib 错误发生在我第一次运行 Jupyter 单元格但不是第二次

pandas - 比较两个差异 pandas 数据帧上两列的值并返回最大值

python - 如何将 pandas 中的一列字典转换为单独的列?

python - 如何用numpy数组中的相应值替换每一行中特定索引中的值

python - 如何删除 DataFrame 字符串中的特殊字符(例如 ",")?