Pandas 应用于数据帧的一系列if语句

Pandas 应用于数据帧的一系列if语句,pandas,dataframe,number-formatting,pandas-groupby,Pandas,Dataframe,Number Formatting,Pandas Groupby,我有一个关于如何完成这项任务的问题。我想在我的数据框中返回或分组一系列数字,这些数字来自'PD'列,范围从.001到1。我要做的是将.91>'PD'>.9到.91(或返回.91的值),.92>'PD'>=.91到.92,…,1>='PD'>=.99到1的值分组。添加到名为“分组”的列上。我一直在做的是手动执行每个if语句,然后将其与基本数据帧合并。有谁能帮我找到一个更有效的方法吗?仍处于使用python的早期阶段。对不起,如果这个问题看起来很简单。感谢您的回答和宝贵时间。让您的数据如下所示 &g

我有一个关于如何完成这项任务的问题。我想在我的数据框中返回或分组一系列数字,这些数字来自'PD'列,范围从.001到1。我要做的是将.91>'PD'>.9到.91(或返回.91的值),.92>'PD'>=.91到.92,…,1>='PD'>=.99到1的值分组。添加到名为“分组”的列上。我一直在做的是手动执行每个if语句,然后将其与基本数据帧合并。有谁能帮我找到一个更有效的方法吗?仍处于使用python的早期阶段。对不起,如果这个问题看起来很简单。感谢您的回答和宝贵时间。

让您的数据如下所示

>>> df = pd.DataFrame({'PD': np.arange(0.001, 1, 0.001), 'data': np.random.randint(10, size=999)})
>>> df.head()
      PD  data
0  0.001     6
1  0.002     3
2  0.003     5
3  0.004     9
4  0.005     7
然后截断PD列的最后一个小数点。这有点棘手,因为在没有str转换的情况下进行取整时会遇到很多问题。例如

>>> df['PD'] = df['PD'].apply(lambda x: float('{:.3f}'.format(x)[:-1]))
>>> df.tail()
       PD  data
994  0.99     1
995  0.99     3
996  0.99     2
997  0.99     1
998  0.99     0
现在你可以使用熊猫群比了。你可以随心所欲地处理数据,例如

>>> df.groupby('PD').agg(lambda x: ','.join(map(str, x)))
                     data
PD                       
0.00    6,3,5,9,7,3,6,8,4
0.01  3,5,7,0,4,9,7,1,7,1
0.02  0,0,9,1,5,4,1,6,7,3
0.03  4,4,6,4,6,5,4,4,2,1
0.04  8,3,1,4,6,5,0,6,0,5
[...]
请注意,由于我的示例中缺少0.000,第一行短了一个项目。

您应该查看,它可以与
groupby
结合使用来聚合数据。如果您提供了一个示例数据和预期输出,您可能会得到一个更具体的答案。