在所有数据框列上应用具有不同bin大小的合并

问题描述 投票:2回答:1

我有一个琐碎的问题。我有一个很大的df,有很多列。我正在尝试找到最有效的方法来对具有不同bin大小的所有列进行装箱并创建新的df。这是仅对单个列进行装箱的示例:

import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.randint(0,20,size=(5, 4)), columns=list('ABCD'))
newDF = pd.cut(df.A, 2, precision=0)
newDF 
0    (9.0, 18.0]
1    (-0.0, 9.0]
2    (-0.0, 9.0]
3    (-0.0, 9.0]
4    (9.0, 18.0]
Name: A, dtype: category
Categories (2, interval[float64]): [(-0.0, 9.0] < (9.0, 18.0]]
python pandas dataframe binning
1个回答
2
投票

如果要分别处理每列,请使用DataFrame.apply

DataFrame.apply

如果要通过相同的分箱处理所有列,请将df = pd.DataFrame(np.random.randint(0,20,size=(5, 4)), columns=list('ABCD')) newDF = df.apply(lambda x: pd.cut(x, 2, precision=0)) print (newDF) A B C D 0 (2.0, 4.0] (8.0, 15.0] (7.0, 13.0] (12.0, 18.0] 1 (2.0, 4.0] (8.0, 15.0] (7.0, 13.0] (12.0, 18.0] 2 (4.0, 7.0] (8.0, 15.0] (13.0, 19.0] (12.0, 18.0] 3 (4.0, 7.0] (8.0, 15.0] (7.0, 13.0] (5.0, 12.0] 4 (4.0, 7.0] (1.0, 8.0] (7.0, 13.0] (5.0, 12.0] 用作DataFrame.stack,则应用DataFrame.stack并通过MultiIndex Series重新整形:

cut
© www.soinside.com 2019 - 2024. All rights reserved.