系列if语句应用于数据框

时间:2018-07-13 01:47:41

标签: pandas dataframe number-formatting pandas-groupby

我对如何完成此任务有疑问。我想返回或分组数据框中的一系列数字,这些数字来自“ PD”列,范围为.001到1。我要对.91>“ PD”>进行分组。 .9到.91(或返回值91),将.92>'PD'> =。91到.92,...,1> ='PD'> =。99到1。 “分组”。我一直在做的是手动执行每个if语句,然后将其与基础数据帧合并。任何人都可以通过一种更有效的方式来帮助我吗?仍处于使用python的早期阶段。很抱歉,这个问题似乎很简单。感谢您的答复和您的时间。

1 个答案:

答案 0 :(得分:1)

让您的数据看起来像这样

<xsl:variable name="contactType">
<xsl:choose>
    <xsl:when test="Private">Private</xsl:when>
    <xsl:when test="Business">Business</xsl:when>
</xsl:choose>
<td class="content2" colspan="2"><xsl:value-of select="$contactType"/></td>
</xsl:variable>

然后截取PD列的最后一个小数。这有点棘手,因为在不使用str转换的情况下进行舍入会遇到很多问题。例如

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

现在您可以使用pandas-groupby。随心所欲地处理数据,例如

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

请注意,由于我的样本中缺少0.000,因此第一行短了一个项目。