我希望将DataFrame中的连续数据转换为谨慎的数据。我已经获得了一些分割值,并且尝试使用:
进行转换for i in range(len(attr)):
attribute = attr[i]
split = splitting_values[i]
x[attribute][x[attribute] <= split] = 0
x[attribute][x[attribute] > split] = 1
splitting_values是一个numpy数组,x是我的数据框。 我在检查数据框时的问题是,某些列完全为0或1,事实并非如此。 使用条件更改数据帧数据的正确方法是什么
答案 0 :(得分:0)
要在熊猫中做到这一点,我们使用pd.cut()
numbers = pd.Series([1, 4, 5, 7, 8, 9, 10])
给予它一定数量的切分将其转换为该数量的分位数(因此,如果您输入4,则将其切分,以便将列表切成4个相等的部分,每个切点位于四分位数之间)
pd.cut(numbers, 3)
0 (0.991, 4.0]
1 (0.991, 4.0]
2 (4.0, 7.0]
3 (4.0, 7.0]
4 (7.0, 10.0]
5 (7.0, 10.0]
6 (7.0, 10.0]
dtype: category
Categories (3, interval[float64]): [(0.991, 4.0] < (4.0, 7.0] < (7.0, 10.0]]
您也可以手动为其分配垃圾箱
pd.cut(numbers, bins=[-np.Inf, 2, 4, 6, np.Inf])
0 (-inf, 2.0]
1 (2.0, 4.0]
2 (4.0, 6.0]
3 (6.0, inf]
4 (6.0, inf]
5 (6.0, inf]
6 (6.0, inf]
dtype: category
Categories (4, interval[float64]): [(-inf, 2.0] < (2.0, 4.0] < (4.0, 6.0] < (6.0, inf]]