无法正确更改DataFrame中的值

时间:2019-04-13 01:32:27

标签: python pandas dataframe

我希望将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,事实并非如此。 使用条件更改数据帧数据的正确方法是什么

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]]