基于另一列对列值进行切片

2024-04-25 06:09:20 发布

您现在位置:Python中文网/ 问答频道 /正文

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

以下是示例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


Tags: 代码import示例dataframepandasdfdataas
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

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

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

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

相关问题 更多 >