首页 > 解决方案 > 熊猫切割,如何标记正确的开放端点?

问题描述

如何获得正确的开放端点以映射到带有 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 )

标签: pythonpandas

解决方案


实际上,您将休息时间用作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 亿的任何内容。


推荐阅读