Python 3.x Python支持透视和分组
每次text\u y列中的值发生变化时,我需要遍历我的数据帧行,并将单列边界框旋转为8列 原始数据帧 所需数据帧 有人能帮助编写一些不将值硬编码到代码中的代码吗?整个数据帧超过6000行。每当另一列中的值发生变化时,我需要将一列的值转换为8Python 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
谢谢 请尝试将您的数据作为可调用代码包含,以便其他人可以轻松复制/粘贴和实验。在您的情况下,您可以通过
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行,但它不是在迭代。