我有一个这种格式的表格,我想与融解的“相反”进行转换。还有一个问题可以解决这个问题,但是它与我想保留的其他许多列不兼容。
原件:
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。
非常感谢您提供任何帮助,并在此先感谢您!
答案 0 :(得分:0)
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
答案 1 :(得分:0)
我想这应该起作用:
var reg = /^AWT=\d\d:\d\d;$/;