应用于数据框的一系列 if 语句
Series of if statements applied to data frame
我对如何执行此任务有疑问。我想在我的数据框中 return 或对一系列数字进行分组,这些数字来自 'PD' 列,范围从 .001 到 1。我想要做的是将那些是 . 91>'PD'>.9 到 .91(或 return 值为 .91),.92>'PD'>=.91 到 .92,...,1>= 'PD' >=.99 到 1. 到名为 'Grouping' 的列上。我一直在做的是手动执行每个 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
现在您可以使用 pandas-groupby。随心所欲地处理数据,例如
>>> 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,第一行少了一项。
我对如何执行此任务有疑问。我想在我的数据框中 return 或对一系列数字进行分组,这些数字来自 'PD' 列,范围从 .001 到 1。我想要做的是将那些是 . 91>'PD'>.9 到 .91(或 return 值为 .91),.92>'PD'>=.91 到 .92,...,1>= 'PD' >=.99 到 1. 到名为 'Grouping' 的列上。我一直在做的是手动执行每个 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
现在您可以使用 pandas-groupby。随心所欲地处理数据,例如
>>> 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,第一行少了一项。