python - “未融化”数据框并保留其余列?蟒蛇熊猫
问题描述
我有一个这种格式的表格,我想用熔化的“相反”来转换它。还有另一个问题可以解决这个问题,但它不适用于我想保留的许多其他列。
原本的:
COUNTRY STATE CATEGORY RESTAURANT STARS REVIEWS
US Texas NaN Texas Chicken 4.1 1,157
US Texas Spicy Texas Chicken 4.1 1,157
US Ohio NaN Mamas Shop 3.6 700
US Ohio NaN Pizza Hut 4.5 855
US Ohio Pizza Pizza Hut 4.5 855
所需的输出:
COUNTRY STATE RESTAURANT STARS REVIEWS SPICY PIZZA
US Texas Texas Chicken 4.1 1,157 1 0
US Ohio Mamas Shop 3.6 700 0 0
US Ohio Pizza Hut 4.5 855 0 1
本质上,我想对许多列进行“分组”,同时根据“类别”列中的类别创建额外的列。对于没有任何特定类别的餐厅,所有这些附加列的值都为 0。我也不想要任何额外的列层,因为我打算将其全部写入 JSON。
非常感谢您对此的任何帮助,并提前感谢您!
解决方案
set_index、crosstab和reindex的组合可以“解开”数据帧,并处理数据帧中存在的空值:
#set aside required multiindex of country, state, restaurant, stars, and reviews
ind = df.set_index(['COUNTRY','STATE','RESTAURANT','STARS','REVIEWS']).index
#get frequency count for Pizza and Spicy
res = pd.crosstab([df.COUNTRY,df.STATE,df.RESTAURANT,df.STARS,df.REVIEWS],df.CATEGORY)
#reindex frequency dataframe with ind
res = res.reindex(ind,fill_value=0).drop_duplicates()
res
CATEGORY Pizza Spicy
COUNTRY STATE RESTAURANT STARS REVIEWS
US Texas Texas Chicken 4.1 1,157 0 1
Ohio Mamas Shop 3.6 700 0 0
Pizza Hut 4.5 855 1 0
推荐阅读
- kibana - 将“%”百分比添加到 kibana 画布指标
- java - 如何测试这个类?
- drupal - 将 drupal 从版本 7 升级到版本 8
- sql - 根据 mssql 中的其他列更新特定列的值
- hadoop - 什么是 pyspark 中的 cpu 密集型任务?
- python-3.x - 如何将变量携带到不同的函数中
- c# - 使用 centralrouteprefix 为 web api 设置带有版本的路由属性的目的是什么
- javascript - 无法在 Javascript 中访问对象方法
- selenium-webdriver - Selenium GRID - 无法创建新服务:ChromeDriverService 未在 Linux 中启动
- python - 如何使用 pandas 将列值与同一行的其他列值的输入一起返回?