当您不知道确切位置时如何在 DF 中分割字符串的一部分?
How to slice a part of a string in DF when you don't know exact position?
我正在努力切片。我觉得一般来说很容易,我也能理解,但是当遇到下面的情况时,我的想法就不行了。
情况:
在我的 DF 专栏之一中,我想在所有行中删除一些有时出现有时不出现的字符串。
问题是这样的:
1.I 不知道这个字符串开始的确切位置(在每一行中它可能是不同的
2.This 字符串各不相同,具体取决于每一行,但是,它总是从相同的结构开始——比方说:“¯main_”
3.After "¯main_" 通常,有一些数字(不同)但是长度总是相同的(9 个数字)
4.I 已经在拆分之后,我有大约 40 列(每列都有类似的问题)。这就是为什么我正在寻找一些更有效的方法来解决它,然后拆分,再生成 ~40 列,然后删除它们。
5.Sometimes 在这个带有“¯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.It 无法正常工作
2.And 我知道 test.find() returns -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
我正在努力切片。我觉得一般来说很容易,我也能理解,但是当遇到下面的情况时,我的想法就不行了。
情况: 在我的 DF 专栏之一中,我想在所有行中删除一些有时出现有时不出现的字符串。
问题是这样的:
1.I 不知道这个字符串开始的确切位置(在每一行中它可能是不同的
2.This 字符串各不相同,具体取决于每一行,但是,它总是从相同的结构开始——比方说:“¯main_”
3.After "¯main_" 通常,有一些数字(不同)但是长度总是相同的(9 个数字)
4.I 已经在拆分之后,我有大约 40 列(每列都有类似的问题)。这就是为什么我正在寻找一些更有效的方法来解决它,然后拆分,再生成 ~40 列,然后删除它们。
5.Sometimes 在这个带有“¯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.It 无法正常工作
2.And 我知道 test.find() returns -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