将数据框列填入单独的百分位数
Fill in dataframe column into separate percentiles
我有一个看起来像这样的大数据框:
ID Fruit Percentiles
001 Apple 0
002 Pear 0
003 Banana 0
004 Kiwi 0
005 Orange 0
006 Pineapple 0
...
...
039 Peach 0
040 Grapes 0
我想创建 40 个不同的百分位数(数据框已经排序,所以我只需要一种方法来填充“百分位数”列)
最终的 Dataframe 应该是这样的:
ID Fruit Percentile
001 Apple 1
002 Pear 1
003 Banana 2
004 Kiwi 2
005 Orange 3
006 Pineapple 3
...
...
039 Peach 40
040 Grapes 40
我试图创建一个循环来做这样的事情:
df.Category[0:int(df.size[0]*0.05)] = 1
df.Category[int(df.size[0]*0.05):int(df.size[0]*0.10)+1] = 2
...
...
df.Category[int(df.size[0]*0.95):int(df.size[0])+1] = 20
pd.cut 可用于 RangeIndex 以分组为均匀大小的组:
df['Percentile'] = pd.cut(df.index, bins=20, labels=False) + 1
如果index is not already the default ascending zero based range index, we can use pd.RangeIndex根据DataFrame的长度生成一个代替:
df['Percentile'] = pd.cut(pd.RangeIndex(len(df)), bins=20, labels=False) + 1
np.arange 的工作原理类似:
df['Percentile'] = pd.cut(np.arange(len(df)), bins=20, labels=False) + 1
一些示例数据:
import numpy as np
import pandas as pd
n = 40
df = pd.DataFrame({
'ID': [f'{i:03d}' for i in range(1, n + 1)],
'Fruit': np.random.choice(['Apple', 'Pear', 'Banana', 'Kiwi', 'Orange'], n)
})
我有一个看起来像这样的大数据框:
ID Fruit Percentiles
001 Apple 0
002 Pear 0
003 Banana 0
004 Kiwi 0
005 Orange 0
006 Pineapple 0
...
...
039 Peach 0
040 Grapes 0
我想创建 40 个不同的百分位数(数据框已经排序,所以我只需要一种方法来填充“百分位数”列)
最终的 Dataframe 应该是这样的:
ID Fruit Percentile
001 Apple 1
002 Pear 1
003 Banana 2
004 Kiwi 2
005 Orange 3
006 Pineapple 3
...
...
039 Peach 40
040 Grapes 40
我试图创建一个循环来做这样的事情:
df.Category[0:int(df.size[0]*0.05)] = 1
df.Category[int(df.size[0]*0.05):int(df.size[0]*0.10)+1] = 2
...
...
df.Category[int(df.size[0]*0.95):int(df.size[0])+1] = 20
pd.cut 可用于 RangeIndex 以分组为均匀大小的组:
df['Percentile'] = pd.cut(df.index, bins=20, labels=False) + 1
如果index is not already the default ascending zero based range index, we can use pd.RangeIndex根据DataFrame的长度生成一个代替:
df['Percentile'] = pd.cut(pd.RangeIndex(len(df)), bins=20, labels=False) + 1
np.arange 的工作原理类似:
df['Percentile'] = pd.cut(np.arange(len(df)), bins=20, labels=False) + 1
一些示例数据:
import numpy as np
import pandas as pd
n = 40
df = pd.DataFrame({
'ID': [f'{i:03d}' for i in range(1, n + 1)],
'Fruit': np.random.choice(['Apple', 'Pear', 'Banana', 'Kiwi', 'Orange'], n)
})