提取每个分组/ID 中特定列中的自然数。

huangapple go评论92阅读模式
英文:

Extract only natural numbers belonging to a specific column, for every group/id in Python

问题

  1. # 加载所需的库
  2. import pandas as pd
  3. # 创建数据集
  4. data = {'id': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  5. 2, 2, 2, 2, 2, 2, 2,
  6. 3, 3, 3, 3, 3, 3, 3, 3,
  7. 4, 4, 4, 4, 4, 4,
  8. 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
  9. 'cycle': [0.0, 0.2, 0.4, 0.6, 0.8, 1, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2,
  10. 0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2,
  11. 0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4,
  12. 0.0, 0.2, 0.4, 0.6, 0.8, 1.0,
  13. 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],
  14. 'Salary': [6, 7, 7, 7, 8, 9, 10, 11, 12, 13, 14, 15,
  15. 3, 4, 4, 4, 4, 5, 6,
  16. 2, 8, 9, 10, 11, 12, 13, 14,
  17. 1, 8, 9, 10, 11, 12,
  18. 6, 7, 7, 9, 10, 11, 12, 13, 14, 15, 9, 10, 11, 12, 13, 14, 15],
  19. 'Children': ['Yes', 'No', 'Yes', 'Yes', 'Yes', 'Yes', 'No', 'No', 'Yes', 'Yes', 'Yes', 'No',
  20. 'Yes', 'Yes', 'Yes', 'No', 'Yes', 'Yes', 'Yes',
  21. 'Yes', 'No', 'Yes', 'Yes', 'No', 'No', 'Yes', 'Yes',
  22. 'Yes', 'Yes', 'No', 'Yes', 'Yes', 'Yes',
  23. 'Yes', 'No', 'Yes', 'No', 'No', 'Yes', 'Yes', 'Yes', 'Yes', 'No', 'No', 'Yes', 'No', 'No', 'Yes', 'Yes', 'Yes'],
  24. 'Days': [141, 123, 128, 66, 66, 120, 141, 52, 96, 120, 141, 52,
  25. 141, 96, 120, 120, 141, 52, 96,
  26. 141, 15, 123, 128, 66, 120, 141, 141,
  27. 141, 141, 123, 128, 66, 67,
  28. 141, 123, 128, 66, 123, 128, 66, 120, 141, 52, 123, 128, 66, 123, 128, 66, 120]
  29. }
  30. # 转换为数据框
  31. df = pd.DataFrame(data)
  32. print("\n df = \n", df)

以上是你提供的代码部分的翻译。如果你有关于代码的具体问题或需要进一步的解释,请随时提出。

英文:
  1. #Load the required libraries
  2. import pandas as pd
  3. #Create dataset
  4. data = {'id': [1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1,
  5. 2, 2, 2, 2, 2, 2, 2,
  6. 3, 3, 3, 3, 3, 3, 3,3,
  7. 4, 4, 4, 4, 4,4,
  8. 5, 5, 5, 5, 5, 5,5, 5, 5,5, 5,5, 5,5, 5, 5,5],
  9. 'cycle': [0.0, 0.2,0.4, 0.6, 0.8, 1,1.2,1.4,1.6,1.8,2.0,2.2,
  10. 0.0, 0.2,0.4, 0.6,0.8,1.0,1.2,
  11. 0.0, 0.2,0.4, 0.6, 0.8,1.0,1.2,1.4,
  12. 0.0, 0.2,0.4, 0.6, 0.8,1.0,
  13. 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],
  14. 'Salary': [6, 7, 7, 7,8,9,10,11,12,13,14,15,
  15. 3, 4, 4, 4,4,5,6,
  16. 2, 8,9,10,11,12,13,14,
  17. 1, 8,9,10,11,12,
  18. 6, 7, 7,9,10,11,12,13,14,15, 9,10,11,12,13,14,15],
  19. 'Children': ['Yes', 'No', 'Yes', 'Yes', 'Yes', 'Yes', 'No','No', 'Yes', 'Yes', 'Yes', 'No',
  20. 'Yes', 'Yes', 'Yes', 'No', 'Yes', 'Yes', 'Yes',
  21. 'Yes', 'No','Yes', 'Yes', 'No','No', 'Yes','Yes',
  22. 'Yes', 'Yes', 'No','Yes', 'Yes','Yes',
  23. 'Yes', 'No', 'Yes', 'No', 'No', 'Yes', 'Yes', 'Yes', 'Yes', 'No', 'No', 'Yes', 'No', 'No', 'Yes', 'Yes', 'Yes'],
  24. 'Days': [141, 123, 128, 66, 66, 120, 141, 52,96, 120, 141, 52,
  25. 141, 96, 120,120, 141, 52,96,
  26. 141, 15,123, 128, 66, 120, 141, 141,
  27. 141, 141,123, 128, 66,67,
  28. 141, 123, 128, 66, 123, 128, 66, 120, 141, 52, 123, 128, 66, 123, 128, 66, 120,],
  29. }
  30. #Convert to dataframe
  31. df = pd.DataFrame(data)
  32. print("\n df = \n",df)

The above dataset looks as such:

提取每个分组/ID 中特定列中的自然数。

Here for every 'id', I wish to extract only those rows, whose 'cycle' is an natural number, as shown in the boxes of the above image file.

The expected dataframe is as such:

提取每个分组/ID 中特定列中的自然数。

Can somebody please let me know how to achieve this task in Pyhton?

答案1

得分: 1

筛选出不等于0的值,并比较整数值是否与浮点数值相同:

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

Filter out 0 values and compare if integer values is same like float value:

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

答案2

得分: 1

这是另一种方法:

  1. df[(df['cycle']!=0.0) & (df['cycle']%0.5==0)].reset_index()
英文:

Here's another way:

  1. df[(df['cycle']!=0.0) & (df['cycle']%0.5==0)].reset_index()

huangapple
  • 本文由 发表于 2023年6月15日 14:40:21
  • 转载请务必保留本文链接:https://go.coder-hub.com/76479762.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定