我有一个包含一些数字的pandas列,例如:
A
1.10
1.11
1.00
2.10
2.11
2.10
3.10
3.11
3.12
我想把数字分成1 2 3的组怎么做呢?所以基本上,我想要指定差值,例如,如果差值是1.00+-0.5,那么我将所有落在这个范围内的数字分组,然后通过将它们放入一个数组来取它们的平均值。我已经尝试了groupby pd.cut(),但没有达到预期的结果。请帮助!
您的数据
d = {"A" : [1.10, 1.11, 1.00, 2.10, 2.11, 2.10, 3.10, 3.11, 3.12]}
df = pd.DataFrame.from_dict(d)
要将数据分组为1,2和3 -您可以简单地将float的第一个int转换为新列中的字符串(这里:grouping_of_A)。
df["grouping_of_A"] = df["A"].map(lambda x: str(x)[0])
print(df)
A grouping_of_A
0 1.10 1
1 1.11 1
2 1.00 1
3 2.10 2
4 2.11 2
5 2.10 2
6 3.10 3
7 3.11 3
8 3.12 3
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 9 entries, 0 to 8
Data columns (total 2 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 A 9 non-null float64
1 grouping_of_A 9 non-null object
dtypes: float64(1), object(1)
memory usage: 272.0+ bytes