熊猫-根据另一列切片列值

时间:2019-03-19 21:55:19

标签: python 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())   

代码输出:

enter image description here

所需的输出:

enter image description here

2 个答案:

答案 0 :(得分:2)

只需使用for循环即可,您可能会担心速度,请检查For loops with pandas - When should I care?

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

答案 1 :(得分:2)

我不确定是否会更快,但是类似的方法是:

df['Slice'] = df.apply(lambda x: x[0][x[1]:x[2]],axis=1)

简而言之,您遍历每一行(axis=1)并应用自定义函数。该函数获取行(存储为x),并使用第二个和第三个元素作为切片的索引(即lambda部分)对第一个元素进行切片。如果不清楚,我会很乐意详细说明。