python-3.x - Pandas:如果最后六个字符包含低于阈值的任何整数,则删除单元格
问题描述
请原谅我的标题;我很难总结一个复杂的问题。
我有一个值的熊猫数据框,如下所示:
col1 col2 col3 col4
10_Q999999 111_Q4987666 110_Q277778 111_Q999999
假设阈值为7。我需要获取该数据帧并删除_Q之后的任何数字低于阈值7的每个单元格。对于每个数字> = 7的单元格,我只想保留字符串的一部分在“_Q”之前。
所需的输出如下所示:
col1 col2 col3 col4
10 111
我试图想办法用“_Q”分割每一列,将最后一段转换为整数列表,取最小值,然后将最小值与阈值进行比较,最后删除整数列表,但我m 陷入了令人作呕的嵌套列表理解的中间:
[[[int(z) for z in y[-3:] if (z != '') and "Q" not in z ] for y in chunk[x].astype(str).str.split("_") if y != ''] for x in chunk[cols] if x != '']
解决方案:
s=~chunk.apply(lambda x :
x.str.split('_Q').str[1].str.contains('[0:6]', na=False))
chunk = chunk.apply(lambda x : x.str.split('_Q').str[0])[s].fillna('')
解决方案
你可以split
使用contains
s=~df.apply(lambda x : x.str.split('_Q').str[1].str.contains('1|2|3|4|5|6'))
df.apply(lambda x : x.str.split('_Q').str[0])[s].fillna('')
Out[549]:
col1 col2 col3 col4
0 10 111
推荐阅读
- sas - 运行以下 SAS 代码并想更改 proc freq
- python - 你如何使用 for 循环来找到最小值而不使用类似于 Python 上的“min”的东西?
- excel - 在一堆 ElseIf 语句之后没有 If 错误的 Else
- mysql - mysql与aws中node连接超时错误有什么解决办法吗?
- c++ - 在 PATH 中找不到 CLION 中的 GCC 编译器,因此无法编译简单的 C++ 程序
- ios - 如何为我的应用部署更新的 iOS 构建
- nginx - Nginx 两个角度应用程序
- spring - Spring Boot Kafka:使用特定主题的所有实例使用相同的消息
- xml - xslt 基于特殊字符分割字符串
- c# - Range.AutoFilter - 包含字符串的值