如何在熊猫中使用groupby创建新列?

泽丁奇

我有一个这样的熊猫数据框,

>>> data = {
    'hotel_code': [1, 1, 1, 1, 1],
    'feed': [1, 1, 1, 1, 2],
    'price_euro': [100, 200, 250, 120, 130],
    'client_nationality': ['fr', 'us', 'ru,de', 'gb', 'cn,us,br,il,fr,gb,de,ie,pk,pl']
}
>>> df = pd.DataFrame(data)
>>> df
   hotel_code  feed  price_euro             client_nationality
0           1     1         100                             fr
1           1     1         200                             us
2           1     1         250                          ru,de
3           1     1         120                             gb
4           1     2         130  cn,us,br,il,fr,gb,de,ie,pk,pl

这是预期的输出,

>>> data = {
    'hotel_code': [1, 1],
    'feed': [1, 2],
    'cluster1': ['fr', 'cn,us,br,il,fr,gb,de,ie,pk,pl'],
    'cluster2': ['us', np.nan],
    'cluster3': ['ru,de', np.nan],
    'cluster4': ['gb', np.nan],
}
>>> df = pd.DataFrame(data)
>>> df
   hotel_code  feed                       cluster1 cluster2 cluster3 cluster4
0           1     1                             fr       us    ru,de       gb
1           1     2  cn,us,br,il,fr,gb,de,ie,pk,pl      NaN      NaN      NaN

我想通过唯一的方式创建群集列hotel_codefeed但是我不知道。群集号是可变的。任何想法?提前致谢。

耶斯列尔

使用GroupBy.cumcount每团体柜台,通过创建多指标hotel_codefeed和计数器Series通过与再塑Series.unstack,最后rename列和DataFrame.reset_index用于MultiIndex给列:

g = df.groupby(["hotel_code", "feed"]).cumcount()

df1 = (df.set_index(["hotel_code", "feed", g])['client_nationality']
         .unstack()
         .rename(columns = lambda x: f'cluster_{x+1}')
         .reset_index())
print (df1)
   hotel_code  feed                      cluster_1 cluster_2 cluster_3  \
0           1     1                             fr        us     ru,de   
1           1     2  cn,us,br,il,fr,gb,de,ie,pk,pl       NaN       NaN   

  cluster_4  
0        gb  
1       NaN  

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

熊猫使用groupby的计数创建新列

如何在熊猫中使用多个列映射功能?

在熊猫中使用动态名称创建新的数据框,并添加新列

如何在与熊猫相同的赋值函数中使用创建的变量

熊猫,使用groupby值创建新列

熊猫使用groupby转换创建布尔列

Python熊猫使用自定义agg函数通过groupby创建新列

如何使用groupby和筛选数据框架创建新列

根据熊猫中groupby元素的大小创建新列

如何在熊猫的多列中使用熔解功能?

如何使用熊猫使用条件日期时间创建新列

使用groupby的一列创建带有熊猫的X个新列

如何在熊猫中使用groupby保持具有另一列最高值的列的值

在分组的熊猫df中使用IF-THEN创建新列

如何在熊猫中使用通配符重命名多列

如何在熊猫数据框中使用groupby取列列表的含义?

使用groupby并合并以在熊猫中创建新列

如何在熊猫中使用groupby创建索引列

如何做groupby max在熊猫数据框中创建新列

如何在data.table中使用规则的字符串值序列创建新列?

如何在熊猫中使用groupby获得datediff?

如何在熊猫中使用条件格式创建日期列

如何在熊猫数据框中创建新列

如何在laravel中使用groupBy查询求和列?

熊猫使用groupby创建新列并避免循环

如何在条件中使用熊猫groupby.count()

如何在熊猫中创建计算的新列

如何在 Pyspark 中使用 groupby 在条件中删除列

如何在 python 中使用 groupby() 2 列