首页 > 解决方案 > 从熊猫数据框中的所有行中提取子字符串

问题描述

我有一个 pd.DataFrame ,如下所示:

pd.DataFrame(["SSDILFJKSIDHFKJSHDKUFH", "SLIDFSOIUDHFIUSDHF", "K<NFSKJGHSDUFSDK"], ["SKDJF", "FDKSJFSSDF", "SIDFDS"])

我想从第一列中提取子序列,但是我想要的子序列的长度取决于第二列中序列的长度。我想提取col1中第2个字符到col1中第n个字符的字符,其中n定义为col2中对应字符串的字符数。

如何才能做到这一点?

标签: pythonpandas

解决方案


这是使用列表推导的一种方式:

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

推荐阅读