ros*_*fun 0 python divide dataframe pandas
我想通过等效分割将数据帧列的连续值转换为离散值。例如,以下是我的input。
我想将列中的连续值a分成3个间隔。
Input:
import pandas as pd
import numpy as np
df = pd.DataFrame({'a':[1.1, 1.2, 1.3, 2.4, 2.5, 4.1]})
Run Code Online (Sandbox Code Playgroud)
Output:
a
0 1.1
1 1.2
2 1.3
3 2.4
4 2.5
5 4.1
Run Code Online (Sandbox Code Playgroud)
在列中 a,最小值为1.1,最大值为4.1,我想将其划分为3 intervals。
如您所见,每个间隔的大小等于(4.1-1.1)/3 = 1.0。因此,我可以将[1.1, 2.1)(大于或等于1.1和小于2.1)0间隔中的所有值都[2.1, 3.1)视为1,as 间隔中的所有值以及[3.1, 4.1]as 间隔中的所有值2。
所以这是我的预期结果。
Expected:
a
0 0
1 0
2 0
3 1
4 1
5 2
Run Code Online (Sandbox Code Playgroud)
您可以将pd.cutwith参数right = False用作:
pd.cut(df.a, bins=3, labels=np.arange(3), right=False)
0 0
1 0
2 0
3 1
4 1
5 2
Name: a, dtype: category
Categories (3, int64): [0 < 1 < 2]
Run Code Online (Sandbox Code Playgroud)
合并的完成方式:
pd.cut(df.a, bins=3, right=False)
0 [1.1, 2.1)
1 [1.1, 2.1)
2 [1.1, 2.1)
3 [2.1, 3.1)
4 [2.1, 3.1)
5 [3.1, 4.103)
Name: a, dtype: category
Categories (3, interval[float64]): [[1.1, 2.1) < [2.1, 3.1) < [3.1, 4.103)]
Run Code Online (Sandbox Code Playgroud)