首页 > 解决方案 > Pandas - 基于另一列切片列值

问题描述

如何根据其他两列的第一个和最后一个字符位置指示符对列值进行切片?

这是示例df的代码:

import pandas as pd

d = {'W': ['abcde','abcde','abcde','abcde']}
df = pd.DataFrame(data=d)

df['First']=[0,0,0,0]
df['Last']=[1,2,3,5]
df['Slice']=['a','ab','abc','abcde']

print(df.head())   

代码输出:

在此处输入图像描述

期望的输出:

在此处输入图像描述

标签: pythonpandas

解决方案


只需使用 for 循环即可,您可能会担心速度,请检查使用 pandas 的 For 循环 - 我应该什么时候关心?

df['Slice']=[x[y:z]for x,y,z in zip(df.W,df.First,df.Last)]
df
Out[918]: 
       W  First  Last  Slice
0  abcde      0     1      a
1  abcde      0     2     ab
2  abcde      0     3    abc
3  abcde      0     5  abcde

推荐阅读