python - 如何在python数据框中将一行转换为带有条件的维度
问题描述
如何在条件下将行转换为维度?
第 0 行和第 3 行是类别总数
当前格式
import pandas as pd
data = [['FRUIT', 'FRU', 100],['A.GRAPE','A.GRA', 50],['A.APPLE','A.APP', 50],
['VEGETABLE', 'VEG', 75],['A.TOMATO','A.TOM', 25],['A.CABBAGE','A.CAB', 25],['A.CARROT','A.CAR', 25]]
df = pd.DataFrame(data, columns = ['name', 'abbrevation', 'value'])
df.head(10)
所需格式
data2 = [['FRUIT','FRU','A.GRAPE','A.GRA', 50],['FRUIT','FRU','A.APPLE','A.APP', 50],
['VEGETABLE','VEG','A.TOMATO','A.TOM', 25],['VEGETABLE','VEG','A.CABBAGE','A.CAB', 25],['VEGETABLE','VEG','A.CARROT','A.CAR', 25]]
df2 = pd.DataFrame(data2, columns = ['category','category abbrevation','name', 'abbrevation', 'value'])
df2.head(10)
*类别下的行号可能不同
我检查了论坛,似乎什么都没有
尝试参考此@https://stackoverflow.com/questions/62626290/how-to-merge-every-3-rows-of-a-dataframe-into-1-row-with-3-columns
但那是不同的,我可以知道如何实现所需的格式吗?
谢谢
解决方案
通过仅应用类别的 alpha 来查找类别。使用前向填充 - ffil 将类别中的 None 值替换为 Non-None 值
data = [['FRUIT', 'FRU', 100],['A.GRAPE','A.GRA', 50],['A.APPLE','A.APP', 50],
['VEGETABLE', 'VEG', 75],['A.TOMATO','A.TOM', 25],['A.CABBAGE','A.CAB', 25],['A.CARROT','A.CAR', 25]]
df = pd.DataFrame(data, columns = ['name', 'abbrevation', 'value'])
df['Category']=df['name'].apply(lambda x: x if x.isalpha() else None)
df.ffill(inplace=True)
print(df)
输出
name abbrevation value Category
0 FRUIT FRU 100 FRUIT
1 A.GRAPE A.GRA 50 FRUIT
2 A.APPLE A.APP 50 FRUIT
3 VEGETABLE VEG 75 VEGETABLE
4 A.TOMATO A.TOM 25 VEGETABLE
5 A.CABBAGE A.CAB 25 VEGETABLE
6 A.CARROT A.CAR 25 VEGETABLE
推荐阅读
- javascript - 冻结网站元素直到时间过去
- excel - 为什么在使用 Flynsarmy csv 播种器包时从 Excel 导出到 Csv 会导致 Laravel Seeder 静默失败?
- r - Shiny:使用 selectizeInput 选择组
- php - 如何在laravel中为票务系统创建模型之间的关系
- android - 如何在保持更新的同时通过whatsapp发送我的位置?
- matlab - Matlab中如何防止物体被camlight照亮?
- java - 使用 gson 从文件夹中读取文件
- java - 为什么 ItemTouchHelper 在删除然后再次添加时不恢复原始视图?
- php - 将文本中的所有 URL 和电子邮件替换为 PHP 中的可点击链接
- java - 在 SQL 查询中包含静态值