如何使用 pd.cut 获取正确的开放端点以映射到标签?例如下面的代码片段, 仅显示区间而不是标签(例如“[10000000.0, 50000000.0)”而不是“100 亿美元到 500 亿美元”)?
import pandas as pd
import numpy as np
breaks = [0, 1000000, 5000000, 10000000, 50000000] # actual values are in millions
labels = [
'under $1 billion',
'$1 billion - $5 billion',
'$5 billion - $10 billion',
'$10 billion to $50 billion',
'over $50 billion'
]
interval = pd.IntervalIndex.from_breaks(breaks, closed='left')
df = pd.DataFrame({'value': np.random.randint(10000, 50000000, 20)})
df['Asset Size'] = pd.cut(df['value'], interval, labels=labels, right=False )
最佳答案
您实际上将中断用作 pd.cut
中的垃圾箱。无需使用pd.IntervalIndex
。
breaks = [0, 1000000, 5000000, 10000000, 50000000, np.inf] # actual values are in millions
labels = [
'under $1 billion',
'\$1 billion - $5 billion',
'\$5 billion - $10 billion',
'\$10 billion - $50 billion',
'over $50 billion']
df = pd.DataFrame({'value': np.random.randint(0, 50000000, 20)})
df['Asset Size'] = pd.cut(df['value'], bins = breaks, labels=labels, right=False)
\
是以 $
符号开头的字符串的转义,您还需要添加 np.inf
来表示任何内容超过 500 亿。
关于python - Pandas cut,如何标记正确的开放端点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60624454/