解题思路:时长是客户偏好的具体表现形式,读取数据后,第一步按照时长进行降序排序;第二步,提取机顶盒信息,并按照机顶盒名称排序;第三步,重置每一个机顶盒对应的索引;第四步,依据机顶盒分组并按照时长降序排序;第五步,按照频道名称撤销堆叠,得到预计结果。
具体实现代码:
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
-