将分类值转换为Pandas中的列

我需要将类别行转换为单独的列,同时将主键保留在数据中。

在数据中,所有有用的属性均位于2列(attribute_name和attribute_value)中。我想将attribute_name中的行转换为单独的列,并用attribute_value列中的相应数据填充它们(如下图所示)。

注意:并非所有的part_id都具有相同的属性名称或已填充它们。转换后,某些part_id在新列中将缺少值。

我尝试了熊猫的unstack()和pivot()函数,但它们还将platform_id和part_id值转换为列。

下面的代码最接近我的要求,但是它为每个part_id创建了重复的列,并且在保留诸如platform_id和part_id之类的主键的同时,我无法进行此转换:

df[['attribute_name', attribute_value']].set_index('attribute_name').T.rename_axis(None axis=1).reset_index(drop=True)

添加代码以重新创建数据框:

data = {'Platform_id':[4356, 4356, 4356, 23675, 23675, 23675, 772, 772],\

    'part_id':['XCVT43', 'XCVT43', 'XCVT43', 'TT3344', 'TT3344', 'TT3344', 'GHTYW2', 'GHTYW2'], \

    'class_id':['PROCESSOR', 'PROCESSOR','PROCESSOR','PROCESSOR','PROCESSOR','PROCESSOR','PROCESSOR','PROCESSOR',], \

    'attribute_name': ['Vendor_name', 'Cache', 'Clock-speed', 'Vendor_name', 'Model_name', 'Clock-speed', 'Vendor_name', 'Cache'], \

    'attribute_value': ['Intel', '4', '3.1', 'Intel', '4500U', '2.3', None, '4']}



df = pd.DataFrame(data)

数据转换前后

安塞夫

您可以使用:

vendors=df['attribute_name'].unique()
df2=pd.concat([df.set_index(['Platform_id','part_id','class_id']).groupby('attribute_name')['attribute_value'].get_group(key) for key in vendors],axis=1)
df2.columns=vendors
df2.reset_index(inplace=True)
print(df2)



   Platform_id part_id   class_id Vendor_name Cache Clock-speed Model_name
0          772  GHTYW2  PROCESSOR        None     4         NaN        NaN
1         4356  XCVT43  PROCESSOR       Intel     4         3.1        NaN
2        23675  TT3344  PROCESSOR       Intel   NaN         2.3      4500U

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将分类值的行转换为 Pandas 中的列

将分类代码转换为分类值

在Pandas中,如何将布尔列转换为分类列?

将数据框列从数值转换为分类值

如何将分类列的值转换为不同的列名?

将复合值转换为Pandas数据框中的列

将索引值转换为pandas中的列

将行值转换为Pandas中的特定列

如何将多个分类列转换为整数,以在PySpark中维护共享值?

将多个分类值转换为数值

如何将数据框列的分类值转换为sckikit-learn中的一键编码列?

将分类列转换为特定整数

将分类列转换为数值

如何将值转换为列并将其他列中的值放入 Pandas 中的这些列中

使用Pandas将分类值转换为二进制

Pyspark DataFrame - 如何将一列从分类值转换为 int?

Pandas DataFrame:如何将数字列转换为成对的分类数据?

如何将Python Pandas列中的“ 2 + 3”之类的值转换为其汇总值

如何将重复的索引值转换为 Pandas 中的新列

将一列中的字典值转换为以pandas为单位的特定数字

使用辅助索引值将列转换为Pandas中的行

将行值转换为Pandas数据框中现有的预定义列

如何将值从单元格转换为Pandas中的新列?

如何将一列的每一行值转换为pandas中的列表?

如何将Final_Unique列转换为pandas中的标头值

Pythons Pandas - 将列中的 Str 对象值转换为 Float

如何使用 Pandas 将列中的匹配值转换为字典

高效地将字典的键和值转换为pandas数据框中的列

将 Pandas DataFrame 中的列转换为带有 nan 值的浮点数