将字符串组转换为熊猫数据帧

时间:2021-07-31 00:19:04

标签: python pandas binning

我想通过创建一个将数字列表转换为组的函数来对一些数字列表进行分组,然后将这些数字转换为熊猫数据框,但它不起作用。

列表 = [ 10, 50, 80, 12, 5, 8, 19, 90, 40, 8, 7, 9, 18, 27, 30, 45]

def number_group(x):

  item = [ ]
  for i in x:
    if i in range(0, 30):
      print (' group 10 and 30')  
    elif i in range(30, 60):
      print ('group 30 and 60')
    elif i in range (60, 90):
      print ('group 60 and 90')
    elif i in range (90, 120):
      print ('group 90 and 120')
    else:
      return ('NAN')
    item.append((i))
  return 

当我将我的列表传递给函数并尝试将结果转换为熊猫数据帧时,我一直没有得到。 知道如何完成这些吗?

2 个答案:

答案 0 :(得分:0)

list=number_group([ 10, 50, 80, 12, 5, 8, 19, 90, 40, 8, 7, 9, 18, 27, 30,45])

df=pd.DataFrame(list,columns=['Number_Group'])

答案 1 :(得分:0)

这称为binning,命令是pd.cut(x, bins)。作为奖励,它为超出范围的值提供 NaN:

ll = [10, 50, 80, 12, 5, 8, 19, 90, 40, 8, 7, 9, 18, 27, 30, 45, -1, 333]
binned = pd.cut(ll, [0, 30, 60, 90, 120], ordered=True)

[(0, 30], (30, 60], (60, 90], (0, 30], (0, 30], ..., (0.0, 30.0], (0.0, 30.0], (30.0, 60.0], NaN, NaN]

Length: 18
Categories (4, interval[int64]): [(0, 30] < (30, 60] < (60, 90] < (90, 120]]

注意输出是 pandas Categorical。它给出了与您想要的相似的类别名称。