我有一个pd.DataFrame,如下所示:
pd.DataFrame(["SSDILFJKSIDHFKJSHDKUFH", "SLIDFSOIUDHFIUSDHF", "K<NFSKJGHSDUFSDK"], ["SKDJF", "FDKSJFSSDF", "SIDFDS"])
我想从第一列中提取子序列,但我想要的子序列的长度取决于第二列中序列的长度。我想从col1中的第二个字符中提取字符到col1中的第n个字符,其中n被定义为col2中相应字符串中的字符数。
如何做到这一点?
答案 0 :(得分:2)
这是使用列表理解的一种方式:
df = pd.DataFrame({'A': ["SSDILFJKSIDHFKJSHDKUFH", "SLIDFSOIUDHFIUSDHF",
"K<NFSKJGHSDUFSDK"]},
index=["SKDJF", "FDKSJFSSDF", "SIDFDS"])
df['B'] = [j[1:i+1] for i, j in zip(s.index.map(len), s.values)]
print(df)
A B
SKDJF SSDILFJKSIDHFKJSHDKUFH SDILF
FDKSJFSSDF SLIDFSOIUDHFIUSDHF LIDFSOIUDH
SIDFDS K<NFSKJGHSDUFSDK <NFSKJ
答案 1 :(得分:1)
您可以尝试使用apply
df
Out[115]:
index 0
0 SKDJF SSDILFJKSIDHFKJSHDKUFH
1 FDKSJFSSDF SLIDFSOIUDHFIUSDHF
2 SIDFDS K<NFSKJGHSDUFSDK
df.apply(lambda x : x[0][len(x['index'])],axis=1)
Out[116]:
0 F
1 H
2 J
dtype: object
或仅使用python
[y[len(x)]for x,y in zip(df['index'],df[0])]
Out[117]: ['F', 'H', 'J']