python - 当您不知道确切位置时,如何在 DF 中对字符串的一部分进行切片?
问题描述
我正在为切片而苦苦挣扎。我认为这通常很容易并且我理解它,但是当涉及到以下情况时,我的想法不起作用。
情况:在我的 DF 列之一中,我想在所有行中删除一些有时会出现有时不会出现的字符串。
问题看起来像这样:
1.我不知道这个字符串开始的确切位置(在每一行中它可能是不同的
2.这个字符串不同,取决于每一行,但是,它总是从同一个结构开始 - 比如说:“¯main_”
3.通常在“¯main_”之后,有一些数字(它不同)但是长度总是相同的(9个数字)
4.我已经在拆分之后,我有大约 40 列(每列都有类似的问题)。这就是为什么我正在寻找一些更有效的方法来解决它,然后拆分,生成大约 40 列然后删除它们。
5.有时在这个带有“¯main_”的字符串之后,我想在同一列中留下一些额外的字符串。
例子:
Column1
A1-19
B2-52
C3-1245¯main_123456789
D4
Z89028
F7¯main_123456789,Z241
寻找这样的结果:
Column1
A1-19
B2-52
C3-1245
D4
Z89028
F7,Z241
到目前为止我准备的最佳解决方案:
a = test.find("¯")
b = a+14
df[0].str.slice(start = a, stop = b)
但:
1.它不能正常工作
2.我知道 test.find() 在找不到字符时会返回 -1。我不知道如何摆脱它 - 写一个循环?我相信存在一些更好(更有效)的解决方案。然而,经过几个小时的寻找,我决定寻求帮助。
解决方案
按所有列循环,按位置拆分并按位置将提取的字符串附加到帮助列表,最后分配回列:
print (df)
Column1
0 NaN
1 B2-52
2 C3-1245¯main_123456789
3 D4
4 Z89028
5 F7¯main_123456789,Z241
for c in df.columns:
out = []
for x in df[c]:
if x == x:
p = x.find('¯')
if p != -1:
out.append(x[:p] + x[p+14:])
else:
out.append(x)
else:
out.append(x)
df[c] = out
print (df)
Column1
0 NaN
1 B2-52
2 C3-1245Â9
3 D4
4 Z89028
5 F7Â9,Z241
推荐阅读
- python - 安装 python 3 后 httpie 仍然使用 python 2.7
- function - Julia中函数名称的大写
- c# - 写入 HttpContext 时出现 System.ObjectDisposedException
- php - 使用 PHP 获取 JSON 密钥
- c# - 如何永远重置和循环此计时器 Unity?
- reactjs - React - 道具不是一个函数
- tabulator - 制表符:使用格式化程序下载 XLXs 文件时如何忽略 html 语法:html
- c# - 在多个地方管理多个属性的空检查的最佳方法c#
- transactions - 事务响应“responseCode”字段
- python - Cannot define inter dependent relationships among models using SQLAlchemy