【问题标题】:Pandas - slicing column values based on another columnPandas - 基于另一列切片列值
【发布时间】:2019-08-10 13:04:14
【问题描述】:

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

这是示例 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())   

代码输出:

期望的输出:

【问题讨论】:

    标签: python pandas


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-22
        • 1970-01-01
        • 2021-07-17
        • 2018-03-01
        • 2018-05-03
        相关资源
        最近更新 更多