python-3.x - 对于 Python 中的每个组/id,仅提取属于特定列的自然数

标签 python-3.x pandas dataframe group-by

#Load the required libraries
import pandas as pd

#Create dataset
data = {'id': [1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1,
               2, 2, 2, 2, 2, 2, 2,
               3, 3, 3, 3, 3, 3, 3,3,
               4, 4, 4, 4, 4,4,
               5, 5, 5, 5, 5, 5,5, 5, 5,5,     5,5, 5,5, 5, 5,5],
        'cycle': [0.0, 0.2,0.4, 0.6, 0.8, 1,1.2,1.4,1.6,1.8,2.0,2.2,
                  0.0, 0.2,0.4, 0.6,0.8,1.0,1.2,
                  0.0, 0.2,0.4, 0.6, 0.8,1.0,1.2,1.4,
                  0.0, 0.2,0.4, 0.6, 0.8,1.0,
                  0.0, 0.2,0.4, 0.6, 0.8, 1.0,1.2,1.4,1.6,1.8,   2.0,2.2,2.4,2.6,2.8,3.0,3.2],
        'Salary': [6, 7, 7, 7,8,9,10,11,12,13,14,15,
                   3, 4, 4, 4,4,5,6,
                   2, 8,9,10,11,12,13,14,
                   1, 8,9,10,11,12,
                   6, 7, 7,9,10,11,12,13,14,15, 9,10,11,12,13,14,15],
        'Children': ['Yes', 'No', 'Yes', 'Yes', 'Yes', 'Yes', 'No','No', 'Yes', 'Yes', 'Yes', 'No',
                     'Yes', 'Yes', 'Yes', 'No', 'Yes', 'Yes', 'Yes', 
                     'Yes', 'No','Yes', 'Yes', 'No','No', 'Yes','Yes',
                     'Yes', 'Yes', 'No','Yes', 'Yes','Yes',
                     'Yes', 'No',  'Yes', 'No', 'No', 'Yes', 'Yes', 'Yes', 'Yes', 'No',    'No',  'Yes', 'No', 'No', 'Yes', 'Yes', 'Yes'],
        'Days': [141, 123, 128, 66, 66, 120, 141, 52,96, 120, 141, 52,
                 141, 96, 120,120, 141, 52,96,
                 141,  15,123, 128, 66, 120, 141, 141,
                 141, 141,123, 128, 66,67,
                 141, 123, 128, 66, 123, 128, 66, 120, 141, 52,   123, 128, 66, 123, 128, 66, 120,],
        }

#Convert to dataframe
df = pd.DataFrame(data)
print("\n df = \n",df)

上面的数据集如下所示:

enter image description here

在这里,对于每个“id”,我希望仅提取那些“周期”是自然数的行,如上面图像文件的框中所示。

预期的数据帧如下:

enter image description here

有人可以告诉我如何在 Pyhton 中完成这项任务吗?

最佳答案

过滤掉0值并比较integer值是否与float值相同:

out=df[df['cycle'].ne(0) & df['cycle'].astype(int).eq(df['cycle'])].reset_index(drop=True)
print (out)
   id  cycle  Salary Children  Days
0   1    1.0       9      Yes   120
1   1    2.0      14      Yes   141
2   2    1.0       5      Yes    52
3   3    1.0      12       No   120
4   4    1.0      12      Yes    67
5   5    1.0      11      Yes   128
6   5    2.0       9       No   123
7   5    3.0      14      Yes    66

关于python-3.x - 对于 Python 中的每个组/id,仅提取属于特定列的自然数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76479762/

相关文章:

Python CSV 插入最后换行符 - 我怎样才能避免它?

python - 如何重写 django Rest 框架 ModelViewSet 的创建操作来创建批量记录?

Python MRO - 在多重继承中使用 super

python - pandas 中 DataFrame 沿行轴的 bool 索引

r - 如何使用动态名称计算 R 数据框中的多个新列

python - 更改列表中的特定索引

python - 如何在Python中使用split()提取最后两个单词?

python - pandas 字符串在基于另一列的一列中出现的次数

r - 在两个不同数据帧上循环应用的函数

r - 从公司的每日返回中找出每周返回