将 pd.cut 列表中的连续元素与新的直方图标签列表配对?
Pair consecutive elements in a pd.cut-list to new histogram label-list?
我想根据切割间隔自动设置分箱直方图的标签。数据箱是通过在数据帧上应用 pd.cut() 创建的。 pd.cut 的列表是手动指定的(请参阅切割列表),但我希望根据切割列表自动设置直方图标签。
如何使用代码将切割列表转换为标签列表?
#cut list
cut = [0,20,40,60,80,100]
#desired label list
label = ['[0-20]', ']20-40]', ']40-60]', ']60-80]', ']80-100]']
#to be used for:
pd_cut = pd.cut(df, cut, labels=label, include_lowest=True).astype(str)
您可以使用 zip
遍历对,并不断更新列表 label
:
cut = [0,20,40,60,80,100]
label = []
for i, p in enumerate(zip(cut, cut[1:])):
ob = '[' if i == 0 else ']'
label.append('{}{}-{}]'.format(ob, *p))
print(label)
输出:
['[0-20]', ']20-40]', ']40-60]', ']60-80]', ']80-100]']
除了 zip
、enumerate
和切片之外,您还可以使用带有 range
和 len
的经典 for 循环:
for i in range(len(cut) - 1):
ob = '[' if i == 0 else ']'
label.append('{}{}-{}]'.format(ob, cut[i], cut[i + 1]))
我想根据切割间隔自动设置分箱直方图的标签。数据箱是通过在数据帧上应用 pd.cut() 创建的。 pd.cut 的列表是手动指定的(请参阅切割列表),但我希望根据切割列表自动设置直方图标签。 如何使用代码将切割列表转换为标签列表?
#cut list
cut = [0,20,40,60,80,100]
#desired label list
label = ['[0-20]', ']20-40]', ']40-60]', ']60-80]', ']80-100]']
#to be used for:
pd_cut = pd.cut(df, cut, labels=label, include_lowest=True).astype(str)
您可以使用 zip
遍历对,并不断更新列表 label
:
cut = [0,20,40,60,80,100]
label = []
for i, p in enumerate(zip(cut, cut[1:])):
ob = '[' if i == 0 else ']'
label.append('{}{}-{}]'.format(ob, *p))
print(label)
输出:
['[0-20]', ']20-40]', ']40-60]', ']60-80]', ']80-100]']
除了 zip
、enumerate
和切片之外,您还可以使用带有 range
和 len
的经典 for 循环:
for i in range(len(cut) - 1):
ob = '[' if i == 0 else ']'
label.append('{}{}-{}]'.format(ob, cut[i], cut[i + 1]))