解题思路:常用df.index获取行索引,获取到是dataframe的所有索引,例如题目中的表,如果用df.index获取索引的结果是这样:MultiIndex([('第一分公司', '销售部'),
('第一分公司', '市场部'),
('第一分公司', '行政部'),
('第二分公司', '销售部'),
('第二分公司', '市场部'),
('第二分公司', '行政部')],
names=['公司', '部门'])
不符合题目要求。
而索引本身有查找单独某一重索引的方法,即get_level_values(),参数指定索引位置或者索引名,即可提取出指定的索引值。
-
-
yuechuchen
2020-04-29
-
解题思路:时长是客户偏好的具体表现形式,读取数据后,第一步按照时长进行降序排序;第二步,提取机顶盒信息,并按照机顶盒名称排序;第三步,重置每一个机顶盒对应的索引;第四步,依据机顶盒分组并按照时长降序排序;第五步,按照频道名称撤销堆叠,得到预计结果。
具体实现代码:
import pandas as pd
data = pd.DataFrame()
data["机顶盒设备号"] = ["10001","10001","10002","10002","10002","10002","10003","10003","10003","10003","10004","10004","10005","10005","10005"]
data["频道名称"] = ["东方卫视","翡翠台","浙江卫视","江苏卫视","珠江电影","卡酷动画","湖南卫视","中央5台","北京卫视","广东卫视","福建卫视","江西卫视","河北卫视","河南卫视","陕西卫视"]
np.random.seed(0)
data["时长"] = abs(np.random.randn(15))
data_s = data.sort_values(["机顶盒设备号","时长"],ascending=[True,False])
s = data_s.机顶盒设备号.value_counts().sort_index()
list1 = []
for i in s.index:
for j in range(s[i]):
list1.append(j)
data_s.index = list1
gp1 = data_s.groupby("机顶盒设备号").apply(lambda x : x.sort_values("时长",ascending = False))
gp1["频道名称"].unstack()
-
-
yuechuchen
2020-04-27
-
参考答案:
arr = np.array([[16., 29., np.nan, 42.],[np.nan, 75., np.nan, 67.],[71., 63., 8.,np.nan]])
arr[np.isnan(arr)] = 0
arr
实现结果与题目要求一致
-
-
yuechuchen
2020-04-27
-
赞
-
-
田齐齐
2020-04-25
-