#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’,我希望只提取那些‘cle’是自然数的行,如上面图像文件的框中所示.

预期的数据帧如下:

enter image description here

有人能告诉我如何在皮顿完成这项任务吗?

推荐答案

筛选出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相关问答推荐

如何匹配字母,数字,短划线,逗号,但不是如果没有数字和字母?

正则表达式匹配并提取括号前的单词

我没有';无法理解此TemplateDoesNotExist错误

可以在 Python 的上下文管理器中调用 sys.exit() 吗?

selenium 无法执行网站上最简单的功能

基于组/ID从原始数据框中创建两个子数据框

Python Regex 查找给定字符串是否遵循交替元音、辅音或辅音、元音的连续模式

SMTP 库 Python3:不太安全的应用程序访问

过滤查询集和Q运算符的不同值

为直方图中的每个 bin 绘制不同的 colored颜色 (Matplotlib)

是否将dict转换为一个数据帧,每个值都有重复的键?

没有可重定向到的 URL.提供一个 url 或在模型上定义一个 get_absolute_url 方法

如何从脚本中提取 PDF 文档的标题以进行重命名?

如何模拟 open(...).write() 而不会出现没有这样的文件或目录错误?

try 在 Windows 10 高 DPI 显示器上解决模糊的 tkinter 文本 + zoom ,但担心我的方法不是 Pythonic 或不安全

如何正确创建自定义文本编解码器?

用于 unicode 大写单词的 Python 正则表达式

Python 3 - Zip 是 pandas 数据框中的迭代器

通过字典有效地替换Pandas 系列中的值

交错4个相同长度的python列表