在数据分析里头, 分组操作差不多是每日都得直面的任务。Pandas 的 groupby 表面上看着挺简单, 然而要切实将其运用好, 能够使你的数据处理效率提高一个层级。它的核心逻辑即为“拆分 - 应用 - 合并”: 先是依据某个维度把数据给拆开, 接着针对每个小组开展计算, 最终把结果拼接回去。听起来好像不繁杂, 不过实际运用的时候, 细节以及技巧才是决定代码优雅程度的关键所在。分组后怎么聚合更高效不少人一开始就采用 groupby 加上 agg, 然而 agg 的写法实际上是颇具讲究的。比如说你拥有一个销售表, 打算依据城市进行分组, 而后同时查看销售额的总和、均价以及订单数量, 最为简便的写法是传入一个列表: df.groupby(‘city’)[‘revenue’].agg([‘sum’, ‘mean’, ‘count’])。如此这般做能够一步达成, 相较于分别计算完毕之后再进行合并要清爽许多。但偶尔你得针对不一样的列开展不一样的操作, 比如说针对金额那一列进行求和, 针对数量那一列求取均值, 在这种情形下就得运用字典, 即df.groupby(‘city’).agg({‘revenue’: ‘sum’, ‘quantity’: ‘mean’}), 这样的写法极为灵活, 特别是当你去处理含有几十个字段的报表之际, 能够省去好多重复的代码。还有一种常常被人忽视的场景, 那就是分组之后要保留原始数据的全部列。不少人会先进行分组, 接着再手动去合并, 实际上可以运用transform。举例来说, 要是你想要给每一个组计算出一个均值, 随后把这个均值赋予回原表的新列, transform所做的事情便是如此: df[‘avg_revenue’] df.groupby(‘city’)[‘revenue’].transform(‘mean’)。它并不会去压缩行数, 能够完美地解决那样一种问题, 那种问题是需要进行分组统计值, 同时又不想要丢失细节的。多列分组和复杂筛选怎么做于工作里头碰到的多维度分组普遍得不行。就好像依据城市以及月份这两个字段来进行分组, 仅仅只需将列名放置到列表当中就可以做到: df.groupby([‘city’, ‘month’])[‘revenue’].sum()。其结果将会是成为呈现出多层索引的Series, 要是你对此并不习惯, 能够增添个reset_index() 把它弄平整。这样的分层结构在往后进行透视的时候实际上相当有用处。有时候, 存在这样一种情况, 即你得进行分组操作, 之后从分组里筛选出符合条件的组, 举例来说, 像是要找出销售额最高的前三个城市这种状况, 那么就能够运用nlargest, 具体操作是df.groupby(‘city’)[‘revenue’].sum().nlargest(3)。若你的需求更为复杂, 像每个城市之中销售额处于最高水平的三个订单那种情况, 那就得运用 head 并配合排序来进行操作: df.sort_values(‘revenue’, ascendingFalse).groupby(‘city’).head(3)。这般链式操作的写法具备流畅性, 读起来也显得直观。https://www.hongxiu.com/booklist/1506195https://www.hongxiu.com/booklist/1506192https://www.hongxiu.com/booklist/1506189https://www.hongxiu.com/booklist/1506187https://www.hongxiu.com/booklist/1506186https://www.hongxiu.com/booklist/1506184https://www.hongxiu.com/booklist/1506183https://www.hongxiu.com/booklist/1506172https://www.hongxiu.com/booklist/1506171https://www.hongxiu.com/booklist/1506177https://www.hongxiu.com/booklist/1506166https://www.hongxiu.com/booklist/1506163https://www.hongxiu.com/booklist/1506181https://www.hongxiu.com/booklist/1506178https://www.hongxiu.com/booklist/1506174https://www.hongxiu.com/booklist/1506169https://www.hongxiu.com/booklist/1506165https://www.hongxiu.com/booklist/1506158https://www.hongxiu.com/booklist/1506182https://www.hongxiu.com/booklist/1506180https://www.hongxiu.com/booklist/1506179https://www.hongxiu.com/booklist/1506176https://www.hongxiu.com/booklist/1506175https://www.hongxiu.com/booklist/1506173https://www.hongxiu.com/booklist/1506170https://www.hongxiu.com/booklist/1506168https://www.hongxiu.com/booklist/1506164https://www.hongxiu.com/booklist/1506161https://www.hongxiu.com/booklist/1506162https://www.hongxiu.com/booklist/1506159https://www.hongxiu.com/booklist/1506160https://www.hongxiu.com/booklist/1506167https://www.hongxiu.com/booklist/1506157https://www.hongxiu.com/booklist/1506156https://www.hongxiu.com/booklist/1506155https://www.hongxiu.com/booklist/1506154https://www.hongxiu.com/booklist/1506153https://www.hongxiu.com/booklist/1506152https://www.hongxiu.com/booklist/1506151https://www.hongxiu.com/booklist/1506150https://www.hongxiu.com/booklist/1506149https://www.hongxiu.com/booklist/1506148https://www.hongxiu.com/booklist/1506147https://www.hongxiu.com/booklist/1506146https://www.hongxiu.com/booklist/1506145https://www.hongxiu.com/booklist/1506144https://www.hongxiu.com/booklist/1506143https://www.hongxiu.com/booklist/1506142https://www.hongxiu.com/booklist/1506141https://www.hongxiu.com/booklist/1506140https://www.hongxiu.com/booklist/1506139https://www.hongxiu.com/booklist/1506138https://www.hongxiu.com/booklist/1506137https://www.hongxiu.com/booklist/1506136https://www.hongxiu.com/booklist/1506135https://www.hongxiu.com/booklist/1506134https://www.hongxiu.com/booklist/1506133https://www.hongxiu.com/booklist/1506128https://www.hongxiu.com/booklist/1506126https://www.hongxiu.com/booklist/1506120https://www.hongxiu.com/booklist/1506115https://www.hongxiu.com/booklist/1506102https://www.hongxiu.com/booklist/1506093https://www.hongxiu.com/booklist/1506132https://www.hongxiu.com/booklist/1506131https://www.hongxiu.com/booklist/1506125https://www.hongxiu.com/booklist/1506116https://www.hongxiu.com/booklist/1506118https://www.hongxiu.com/booklist/1506105https://www.hongxiu.com/booklist/1506091https://www.hongxiu.com/booklist/1506095https://www.hongxiu.com/booklist/1506089https://www.hongxiu.com/booklist/1506127https://www.hongxiu.com/booklist/1506129https://www.hongxiu.com/booklist/1506114https://www.hongxiu.com/booklist/1506130https://www.hongxiu.com/booklist/1506124https://www.hongxiu.com/booklist/1506122https://www.hongxiu.com/booklist/1506121https://www.hongxiu.com/booklist/1506123https://www.hongxiu.com/booklist/1506119https://www.hongxiu.com/booklist/1506107https://www.hongxiu.com/booklist/1506117https://www.hongxiu.com/booklist/1506109https://www.hongxiu.com/booklist/1506112https://www.hongxiu.com/booklist/1506110https://www.hongxiu.com/booklist/1506113https://www.hongxiu.com/booklist/1506111https://www.hongxiu.com/booklist/1506106https://www.hongxiu.com/booklist/1506108https://www.hongxiu.com/booklist/1506104https://www.hongxiu.com/booklist/1506103https://www.hongxiu.com/booklist/1506101https://www.hongxiu.com/booklist/1506100https://www.hongxiu.com/booklist/1506098https://www.hongxiu.com/booklist/1506099https://www.hongxiu.com/booklist/1506096https://www.hongxiu.com/booklist/1506090https://www.hongxiu.com/booklist/1506097https://www.hongxiu.com/booklist/1506094https://www.hongxiu.com/booklist/1506092https://www.hongxiu.com/booklist/1506088https://www.hongxiu.com/booklist/1506087https://www.hongxiu.com/booklist/1506085https://www.hongxiu.com/booklist/1506084https://www.hongxiu.com/booklist/1506086https://www.hongxiu.com/booklist/1506083https://www.hongxiu.com/booklist/1506082https://www.hongxiu.com/booklist/1506080https://www.hongxiu.com/booklist/1506081https://www.hongxiu.com/booklist/1506079https://www.hongxiu.com/booklist/1506078https://www.hongxiu.com/booklist/1506077https://www.hongxiu.com/booklist/1506056https://www.hongxiu.com/booklist/1506075https://www.hongxiu.com/booklist/1506076https://www.hongxiu.com/booklist/1506074https://www.hongxiu.com/booklist/1506065https://www.hongxiu.com/booklist/1506073https://www.hongxiu.com/booklist/1506072https://www.hongxiu.com/booklist/1506071https://www.hongxiu.com/booklist/1506070https://www.hongxiu.com/booklist/1506064https://www.hongxiu.com/booklist/1506063https://www.hongxiu.com/booklist/1506058https://www.hongxiu.com/booklist/1506061https://www.hongxiu.com/booklist/1506062https://www.hongxiu.com/booklist/1506068https://www.hongxiu.com/booklist/1506066https://www.hongxiu.com/booklist/1506067https://www.hongxiu.com/booklist/1506069https://www.hongxiu.com/booklist/1506060https://www.hongxiu.com/booklist/1506059https://www.hongxiu.com/booklist/1506057https://www.hongxiu.com/booklist/1506054https://www.hongxiu.com/booklist/1506053https://www.hongxiu.com/booklist/1506055https://www.hongxiu.com/booklist/1506052https://www.hongxiu.com/booklist/1506047https://www.hongxiu.com/booklist/1506051https://www.hongxiu.com/booklist/1506050https://www.hongxiu.com/booklist/1506048https://www.hongxiu.com/booklist/1506049https://www.hongxiu.com/booklist/1506046https://www.hongxiu.com/booklist/1506045https://www.hongxiu.com/booklist/1506043https://www.hongxiu.com/booklist/1506041https://www.hongxiu.com/booklist/1506044https://www.hongxiu.com/booklist/1506042https://www.hongxiu.com/booklist/1506040https://www.hongxiu.com/booklist/1506039https://www.hongxiu.com/booklist/1506037https://www.hongxiu.com/booklist/1506038https://www.hongxiu.com/booklist/1506036https://www.hongxiu.com/booklist/1506035https://www.hongxiu.com/booklist/1506034https://www.hongxiu.com/booklist/1506031https://www.hongxiu.com/booklist/1506033https://www.hongxiu.com/booklist/1506032https://www.hongxiu.com/booklist/1506030https://www.hongxiu.com/booklist/1506029https://www.hongxiu.com/booklist/1506028https://www.hongxiu.com/booklist/1506027https://www.hongxiu.com/booklist/1506026https://www.hongxiu.com/booklist/1506025https://www.hongxiu.com/booklist/1506024https://www.hongxiu.com/booklist/1506023https://www.hongxiu.com/booklist/1506022https://www.hongxiu.com/booklist/1506021https://www.hongxiu.com/booklist/1506020https://www.hongxiu.com/booklist/1506019https://www.hongxiu.com/booklist/1506018https://www.hongxiu.com/booklist/1506017https://www.hongxiu.com/booklist/1506015https://www.hongxiu.com/booklist/1506016https://www.hongxiu.com/booklist/1506014https://www.hongxiu.com/booklist/1506013https://www.hongxiu.com/booklist/1506012https://www.hongxiu.com/booklist/1506011https://www.hongxiu.com/booklist/1506010https://www.hongxiu.com/booklist/1506009https://www.hongxiu.com/booklist/1506007https://www.hongxiu.com/booklist/1506008https://www.hongxiu.com/booklist/1506006https://www.hongxiu.com/booklist/1506005https://www.hongxiu.com/booklist/1506004https://www.hongxiu.com/booklist/1506003https://www.hongxiu.com/booklist/1506002https://www.hongxiu.com/booklist/1506001https://www.hongxiu.com/booklist/1505999https://www.hongxiu.com/booklist/1505998https://www.hongxiu.com/booklist/1506000https://www.hongxiu.com/booklist/1505997https://www.hongxiu.com/booklist/1505996https://www.hongxiu.com/booklist/1505995https://www.hongxiu.com/booklist/1505994https://www.hongxiu.com/booklist/1505993https://www.hongxiu.com/booklist/1505992https://www.hongxiu.com/booklist/1505991https://www.hongxiu.com/booklist/1505990https://www.hongxiu.com/booklist/1505989https://www.hongxiu.com/booklist/1505988https://www.hongxiu.com/booklist/1505987https://www.hongxiu.com/booklist/1505986https://www.hongxiu.com/booklist/1505985https://www.hongxiu.com/booklist/1505984https://www.hongxiu.com/booklist/1505983https://www.hongxiu.com/booklist/1505982
Pandas groupby到底怎么用 从分组到聚合的实战技巧
在数据分析里头, 分组操作差不多是每日都得直面的任务。Pandas 的 groupby 表面上看着挺简单, 然而要切实将其运用好, 能够使你的数据处理效率提高一个层级。它的核心逻辑即为“拆分 - 应用 - 合并”: 先是依据某个维度把数据给拆开, 接着针对每个小组开展计算, 最终把结果拼接回去。听起来好像不繁杂, 不过实际运用的时候, 细节以及技巧才是决定代码优雅程度的关键所在。分组后怎么聚合更高效不少人一开始就采用 groupby 加上 agg, 然而 agg 的写法实际上是颇具讲究的。比如说你拥有一个销售表, 打算依据城市进行分组, 而后同时查看销售额的总和、均价以及订单数量, 最为简便的写法是传入一个列表: df.groupby(‘city’)[‘revenue’].agg([‘sum’, ‘mean’, ‘count’])。如此这般做能够一步达成, 相较于分别计算完毕之后再进行合并要清爽许多。但偶尔你得针对不一样的列开展不一样的操作, 比如说针对金额那一列进行求和, 针对数量那一列求取均值, 在这种情形下就得运用字典, 即df.groupby(‘city’).agg({‘revenue’: ‘sum’, ‘quantity’: ‘mean’}), 这样的写法极为灵活, 特别是当你去处理含有几十个字段的报表之际, 能够省去好多重复的代码。还有一种常常被人忽视的场景, 那就是分组之后要保留原始数据的全部列。不少人会先进行分组, 接着再手动去合并, 实际上可以运用transform。举例来说, 要是你想要给每一个组计算出一个均值, 随后把这个均值赋予回原表的新列, transform所做的事情便是如此: df[‘avg_revenue’] df.groupby(‘city’)[‘revenue’].transform(‘mean’)。它并不会去压缩行数, 能够完美地解决那样一种问题, 那种问题是需要进行分组统计值, 同时又不想要丢失细节的。多列分组和复杂筛选怎么做于工作里头碰到的多维度分组普遍得不行。就好像依据城市以及月份这两个字段来进行分组, 仅仅只需将列名放置到列表当中就可以做到: df.groupby([‘city’, ‘month’])[‘revenue’].sum()。其结果将会是成为呈现出多层索引的Series, 要是你对此并不习惯, 能够增添个reset_index() 把它弄平整。这样的分层结构在往后进行透视的时候实际上相当有用处。有时候, 存在这样一种情况, 即你得进行分组操作, 之后从分组里筛选出符合条件的组, 举例来说, 像是要找出销售额最高的前三个城市这种状况, 那么就能够运用nlargest, 具体操作是df.groupby(‘city’)[‘revenue’].sum().nlargest(3)。若你的需求更为复杂, 像每个城市之中销售额处于最高水平的三个订单那种情况, 那就得运用 head 并配合排序来进行操作: df.sort_values(‘revenue’, ascendingFalse).groupby(‘city’).head(3)。这般链式操作的写法具备流畅性, 读起来也显得直观。https://www.hongxiu.com/booklist/1506195https://www.hongxiu.com/booklist/1506192https://www.hongxiu.com/booklist/1506189https://www.hongxiu.com/booklist/1506187https://www.hongxiu.com/booklist/1506186https://www.hongxiu.com/booklist/1506184https://www.hongxiu.com/booklist/1506183https://www.hongxiu.com/booklist/1506172https://www.hongxiu.com/booklist/1506171https://www.hongxiu.com/booklist/1506177https://www.hongxiu.com/booklist/1506166https://www.hongxiu.com/booklist/1506163https://www.hongxiu.com/booklist/1506181https://www.hongxiu.com/booklist/1506178https://www.hongxiu.com/booklist/1506174https://www.hongxiu.com/booklist/1506169https://www.hongxiu.com/booklist/1506165https://www.hongxiu.com/booklist/1506158https://www.hongxiu.com/booklist/1506182https://www.hongxiu.com/booklist/1506180https://www.hongxiu.com/booklist/1506179https://www.hongxiu.com/booklist/1506176https://www.hongxiu.com/booklist/1506175https://www.hongxiu.com/booklist/1506173https://www.hongxiu.com/booklist/1506170https://www.hongxiu.com/booklist/1506168https://www.hongxiu.com/booklist/1506164https://www.hongxiu.com/booklist/1506161https://www.hongxiu.com/booklist/1506162https://www.hongxiu.com/booklist/1506159https://www.hongxiu.com/booklist/1506160https://www.hongxiu.com/booklist/1506167https://www.hongxiu.com/booklist/1506157https://www.hongxiu.com/booklist/1506156https://www.hongxiu.com/booklist/1506155https://www.hongxiu.com/booklist/1506154https://www.hongxiu.com/booklist/1506153https://www.hongxiu.com/booklist/1506152https://www.hongxiu.com/booklist/1506151https://www.hongxiu.com/booklist/1506150https://www.hongxiu.com/booklist/1506149https://www.hongxiu.com/booklist/1506148https://www.hongxiu.com/booklist/1506147https://www.hongxiu.com/booklist/1506146https://www.hongxiu.com/booklist/1506145https://www.hongxiu.com/booklist/1506144https://www.hongxiu.com/booklist/1506143https://www.hongxiu.com/booklist/1506142https://www.hongxiu.com/booklist/1506141https://www.hongxiu.com/booklist/1506140https://www.hongxiu.com/booklist/1506139https://www.hongxiu.com/booklist/1506138https://www.hongxiu.com/booklist/1506137https://www.hongxiu.com/booklist/1506136https://www.hongxiu.com/booklist/1506135https://www.hongxiu.com/booklist/1506134https://www.hongxiu.com/booklist/1506133https://www.hongxiu.com/booklist/1506128https://www.hongxiu.com/booklist/1506126https://www.hongxiu.com/booklist/1506120https://www.hongxiu.com/booklist/1506115https://www.hongxiu.com/booklist/1506102https://www.hongxiu.com/booklist/1506093https://www.hongxiu.com/booklist/1506132https://www.hongxiu.com/booklist/1506131https://www.hongxiu.com/booklist/1506125https://www.hongxiu.com/booklist/1506116https://www.hongxiu.com/booklist/1506118https://www.hongxiu.com/booklist/1506105https://www.hongxiu.com/booklist/1506091https://www.hongxiu.com/booklist/1506095https://www.hongxiu.com/booklist/1506089https://www.hongxiu.com/booklist/1506127https://www.hongxiu.com/booklist/1506129https://www.hongxiu.com/booklist/1506114https://www.hongxiu.com/booklist/1506130https://www.hongxiu.com/booklist/1506124https://www.hongxiu.com/booklist/1506122https://www.hongxiu.com/booklist/1506121https://www.hongxiu.com/booklist/1506123https://www.hongxiu.com/booklist/1506119https://www.hongxiu.com/booklist/1506107https://www.hongxiu.com/booklist/1506117https://www.hongxiu.com/booklist/1506109https://www.hongxiu.com/booklist/1506112https://www.hongxiu.com/booklist/1506110https://www.hongxiu.com/booklist/1506113https://www.hongxiu.com/booklist/1506111https://www.hongxiu.com/booklist/1506106https://www.hongxiu.com/booklist/1506108https://www.hongxiu.com/booklist/1506104https://www.hongxiu.com/booklist/1506103https://www.hongxiu.com/booklist/1506101https://www.hongxiu.com/booklist/1506100https://www.hongxiu.com/booklist/1506098https://www.hongxiu.com/booklist/1506099https://www.hongxiu.com/booklist/1506096https://www.hongxiu.com/booklist/1506090https://www.hongxiu.com/booklist/1506097https://www.hongxiu.com/booklist/1506094https://www.hongxiu.com/booklist/1506092https://www.hongxiu.com/booklist/1506088https://www.hongxiu.com/booklist/1506087https://www.hongxiu.com/booklist/1506085https://www.hongxiu.com/booklist/1506084https://www.hongxiu.com/booklist/1506086https://www.hongxiu.com/booklist/1506083https://www.hongxiu.com/booklist/1506082https://www.hongxiu.com/booklist/1506080https://www.hongxiu.com/booklist/1506081https://www.hongxiu.com/booklist/1506079https://www.hongxiu.com/booklist/1506078https://www.hongxiu.com/booklist/1506077https://www.hongxiu.com/booklist/1506056https://www.hongxiu.com/booklist/1506075https://www.hongxiu.com/booklist/1506076https://www.hongxiu.com/booklist/1506074https://www.hongxiu.com/booklist/1506065https://www.hongxiu.com/booklist/1506073https://www.hongxiu.com/booklist/1506072https://www.hongxiu.com/booklist/1506071https://www.hongxiu.com/booklist/1506070https://www.hongxiu.com/booklist/1506064https://www.hongxiu.com/booklist/1506063https://www.hongxiu.com/booklist/1506058https://www.hongxiu.com/booklist/1506061https://www.hongxiu.com/booklist/1506062https://www.hongxiu.com/booklist/1506068https://www.hongxiu.com/booklist/1506066https://www.hongxiu.com/booklist/1506067https://www.hongxiu.com/booklist/1506069https://www.hongxiu.com/booklist/1506060https://www.hongxiu.com/booklist/1506059https://www.hongxiu.com/booklist/1506057https://www.hongxiu.com/booklist/1506054https://www.hongxiu.com/booklist/1506053https://www.hongxiu.com/booklist/1506055https://www.hongxiu.com/booklist/1506052https://www.hongxiu.com/booklist/1506047https://www.hongxiu.com/booklist/1506051https://www.hongxiu.com/booklist/1506050https://www.hongxiu.com/booklist/1506048https://www.hongxiu.com/booklist/1506049https://www.hongxiu.com/booklist/1506046https://www.hongxiu.com/booklist/1506045https://www.hongxiu.com/booklist/1506043https://www.hongxiu.com/booklist/1506041https://www.hongxiu.com/booklist/1506044https://www.hongxiu.com/booklist/1506042https://www.hongxiu.com/booklist/1506040https://www.hongxiu.com/booklist/1506039https://www.hongxiu.com/booklist/1506037https://www.hongxiu.com/booklist/1506038https://www.hongxiu.com/booklist/1506036https://www.hongxiu.com/booklist/1506035https://www.hongxiu.com/booklist/1506034https://www.hongxiu.com/booklist/1506031https://www.hongxiu.com/booklist/1506033https://www.hongxiu.com/booklist/1506032https://www.hongxiu.com/booklist/1506030https://www.hongxiu.com/booklist/1506029https://www.hongxiu.com/booklist/1506028https://www.hongxiu.com/booklist/1506027https://www.hongxiu.com/booklist/1506026https://www.hongxiu.com/booklist/1506025https://www.hongxiu.com/booklist/1506024https://www.hongxiu.com/booklist/1506023https://www.hongxiu.com/booklist/1506022https://www.hongxiu.com/booklist/1506021https://www.hongxiu.com/booklist/1506020https://www.hongxiu.com/booklist/1506019https://www.hongxiu.com/booklist/1506018https://www.hongxiu.com/booklist/1506017https://www.hongxiu.com/booklist/1506015https://www.hongxiu.com/booklist/1506016https://www.hongxiu.com/booklist/1506014https://www.hongxiu.com/booklist/1506013https://www.hongxiu.com/booklist/1506012https://www.hongxiu.com/booklist/1506011https://www.hongxiu.com/booklist/1506010https://www.hongxiu.com/booklist/1506009https://www.hongxiu.com/booklist/1506007https://www.hongxiu.com/booklist/1506008https://www.hongxiu.com/booklist/1506006https://www.hongxiu.com/booklist/1506005https://www.hongxiu.com/booklist/1506004https://www.hongxiu.com/booklist/1506003https://www.hongxiu.com/booklist/1506002https://www.hongxiu.com/booklist/1506001https://www.hongxiu.com/booklist/1505999https://www.hongxiu.com/booklist/1505998https://www.hongxiu.com/booklist/1506000https://www.hongxiu.com/booklist/1505997https://www.hongxiu.com/booklist/1505996https://www.hongxiu.com/booklist/1505995https://www.hongxiu.com/booklist/1505994https://www.hongxiu.com/booklist/1505993https://www.hongxiu.com/booklist/1505992https://www.hongxiu.com/booklist/1505991https://www.hongxiu.com/booklist/1505990https://www.hongxiu.com/booklist/1505989https://www.hongxiu.com/booklist/1505988https://www.hongxiu.com/booklist/1505987https://www.hongxiu.com/booklist/1505986https://www.hongxiu.com/booklist/1505985https://www.hongxiu.com/booklist/1505984https://www.hongxiu.com/booklist/1505983https://www.hongxiu.com/booklist/1505982