Python 3.x Python支持透视和分组

Python 3.x Python支持透视和分组,python-3.x,pandas,dataframe,pandas-groupby,pivot-table,Python 3.x,Pandas,Dataframe,Pandas Groupby,Pivot Table,每次text\u y列中的值发生变化时,我需要遍历我的数据帧行,并将单列边界框旋转为8列 原始数据帧 所需数据帧 有人能帮助编写一些不将值硬编码到代码中的代码吗?整个数据帧超过6000行。每当另一列中的值发生变化时,我需要将一列的值转换为8 谢谢 请尝试将您的数据作为可调用代码包含,以便其他人可以轻松复制/粘贴和实验。在您的情况下,您可以通过df.head(16).to_dict('list')获得它。我使用了以下方法 df = pd.DataFrame({ 'boundingBox

每次text\u y列中的值发生变化时,我需要遍历我的数据帧行,并将单列边界框旋转为8列

原始数据帧

所需数据帧

有人能帮助编写一些不将值硬编码到代码中的代码吗?整个数据帧超过6000行。每当另一列中的值发生变化时,我需要将一列的值转换为8


谢谢

请尝试将您的数据作为可调用代码包含,以便其他人可以轻松复制/粘贴和实验。在您的情况下,您可以通过
df.head(16).to_dict('list')
获得它。我使用了以下方法

df = pd.DataFrame({
    'boundingBox_y': [183, 120, 305, 120, 305, 161, 182, 161, 318, 120, 381, 120, 382, 162, 318, 161],
    'text_y': (['FORM'] * 8) + (['ABC'] * 8),
    'confidence': ([0.987] * 8) + ([0.976] * 8)
    })
然后可以
pivot
数据帧,但需要添加一个新列来保存数据透视列名

# rename the current values column
df.rename({'boundingBox_y': 'value'}, axis=1, inplace=True)

# create a column that contains the columns headers and can be pivoted
df['boundingBox_y'] = df.groupby(['confidence', 'text_y']).transform('cumcount')

# pivot your df
df = df.pivot(index=['confidence', 'text_y'],
    columns='boundingBox_y', values='value')
输出

boundingBox_y        0    1    2    3    4    5    6    7
confidence text_y
0.976      ABC     318  120  381  120  382  162  318  161
0.987      FORM    183  120  305  120  305  161  182  161

非常感谢。我试图做到这一点,但没有列出代码中的数据点。这是因为表中有6000多行需要在不同点进行数据透视,但总是在行数据更改时进行数据透视。我需要遍历6000行,而不是每行有8行重复的数据,每行有不同的边界框坐标,我想要一行数据,有8个边界框列。请编辑您的问题并解释此输出与您期望的结果有何不同,我很难理解您想要什么…Hi Richie,边界框的y值看起来是硬编码的。我怎样才能让它在不硬编码值的情况下遍历数据帧呢“硬编码”?
transform
行将根据需要创建尽可能多的ID,因此数据中可能有8列以上。。。你试过了吗?如果它不是您期望的结果,请编辑您的问题,并用此代码和完整数据显示结果,并解释需要改进的内容您好,我确实尝试了此代码,它仅为示例数据中包含的前16行值生成了正确的结果。我得到了您在“输出”中发布的结果。但我需要的不仅仅是这两行。我需要它迭代6000行,但它不是在迭代。