【问题标题】:Filter data of a specific column through pandas [closed]通过熊猫过滤特定列的数据[关闭]
【发布时间】:2020-05-27 15:26:09
【问题描述】:

清理 YrsExp 列
此列可以包含许多脏值。
清理后,此列应包含一个代表年数的数字。
例如,任何 > 10 的年份都应替换为 10,
月份中的任何值都应替换为 0。

此列可以包含以下值:

['7 MONTH' '5 MONTHS' nan '2 YEARS' '1 YEAR' '6 MONTHS' '3 YEARS'
 '2 MONTHS' '5 YEAR' '7 MONTHS' '3 YEAR' '2 YEAR' '6 YEARS' '7 YEARS'
 '4 MONTHS' '4' '6' '7' '2' '8' '15' '5' '10 YEAR' '8 year' '25 YEARS' '3'
 '1' '1YEAR' '5 YEARS' '1 YERS' '06 MONTHS' '05 YEARS' '03 YEARS'
 '04 MONTHS' '02 YEARS' '03 MONTHS' '02 MONTHS' '01 YEARS' '4 YEARS' '10'
 '13' '3YEAR' '6YRS.' '5YRS.' '4YRS.' '7YRS.' '10YRS.' '9YRS.' '3 MOTH'
 '5 MONTH' '20' '6 YEAR' '33' '18' '11' '4 YEAR' '6 Month' '2 MONTH'
 '15 YEAR' '25' '40' '19' '27' '7 YEAR' '17 YEAR' '8 YEAR' '9 YEAR'
 '15 YEARS' '3 MONTH' '11 MONTHS' '6 MONTH' '11 YEARS' '10 YEARS'
 '12 YEARS' '8 MONTH' '9' '30' '12' '4 MONTH' '5 YERS' '3साल' '10साल'
 '1साल' '7साल' '5साल' '3 माह' '2 माह' '3 साल' '2 साल' '4साल' '2साल'
 '18साल' '30साल' '11साल' '40साल' '12साल' '6माह' '3माह' '13साल' '8साल'
 '3 वर्ष' '10 वर्ष' '8 माह' '7 वर्ष' '9वर्श' '3 बर्ष' '5 वर्ष' '5 माह'
 '8 वर्ष' '4 वर्ष' '2 वर्ष' '1 वर्ष' '6 माह' '4माह' '5 साल' '25 साल'
 '9 साल' '5माह' '6साल' '4Y' '20 YEARS' '40 YEAR' '5Y' '12 YEAR' '2MONTHS'
 '9o"kZ' '5o"kZ' '3o"kZ' '20o"kZ' '25o"kZ' '6MONTH' '10YEARS' '2YRS.'
 '2 YRS.' '2YRS' '1YRS' '8YRS' '2YEAR' '3YEAT' '5 YS' '8 MONTHS' '4 YS'
 '6 MTH' '15 YS' '22' '14' '30YEAR' '28' '12 साल' '1 साल' '15 साल'
 '20 साल' '10 साल' '4 साल'] 

【问题讨论】:

  • “脏”值是什么意思?
  • 脏值意味着该列中的值不是应有的方式。 @NYC 编码器
  • 你有没有努力自己解决这个问题?现在,您有一个需求转储和一个要求某人为您编写代码的请求。这对 SO 来说是题外话。
  • @AbhishekGoel。我向您推荐网站规则:stackoverflow.com/help/how-to-ask。如果您不显示任何内容,我们怎么知道您尝试了什么。

标签: python python-3.x pandas numpy


【解决方案1】:

我认为正则表达式可能是你的朋友,Pandas 支持:

玩弄类似的东西:

df['YrsExp'] = df['YrsExp'].extract(r'(\d+)\s*[y|Y]')

和 .where() 将值上限为 10

df['YrsExp'] = df['YrsExp'].where(df < 11, 10)

然后您可以使用 .fillna() 之类的东西来填充与您的正则表达式不匹配的值:

df['YrsExp'] = df['YrsExp'].fillna(0)

所有这些都是 Pandas 内置的,因此请务必查看文档

【讨论】:

  • 当 OP 表现出零努力时,我建议不要发布答案
  • 好的,刚开始发布答案。我会找出标准是什么
  • 您的回答本身就很好,并且可能不会收到任何负面反馈。这真的更多是关于这个问题。我们不想鼓励“给我密码”类型的问题。 OP显然要么没有阅读说明,要么没有遵循它们。不是你的错。
  • 感谢您的澄清。
猜你喜欢
  • 2019-05-21
  • 2019-02-10
  • 2019-08-09
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
  • 2017-12-15
  • 2014-12-02
  • 1970-01-01
相关资源
最近更新 更多