【问题标题】:Pandas DataFrame: use column value to slice string in another columnPandas DataFrame:使用列值在另一列中切片字符串
【发布时间】:2018-05-03 21:46:12
【问题描述】:

我有一个如下的熊猫数据框:

     col1  col2  col3
0    1     3     ABCDEFG
1    1     5     HIJKLMNO
2    1     2     PQRSTUV

我想添加另一列,它应该是col3 的子字符串,从col1 中指示的位置到col2 中指示的位置。像col3[(col1-1):(col2-1)] 这样的东西,应该会导致:

     col1  col2  col3       new_col
0    1     3     ABCDEFG    ABC
1    1     5     HIJKLMNO   HIJK
2    1     2     PQRSTUV    PQ

我尝试了以下方法:

my_df['new_col'] = my_df.col3.str.slice(my_df['col1']-1, my_df['col2']-1)

my_df['new_col'] = data['col3'].str[(my_df['col1']-1):(my_df['col2']-1)]

它们都产生NaN 的列,而如果我插入两个数值(即data['col3'].str[1:3]),它工作正常。我检查了类型是正确的(int64、int64 和对象)。此外,在这样的上下文之外(例如使用 for 循环)我可以完成工作,但我更喜欢利用 DataFrame 的单行。我做错了什么?

【问题讨论】:

    标签: python string pandas dataframe slice


    【解决方案1】:

    使用apply,因为每一行都必须单独处理:

    my_df['new_col'] = my_df.apply(lambda x: x['col3'][x['col1']-1:x['col2']], 1)  
    print (my_df)
       col1  col2      col3 new_col
    0     1     3   ABCDEFG     ABC
    1     1     5  HIJKLMNO   HIJKL
    2     1     2   PQRSTUV      PQ
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-10
      • 2020-11-09
      • 2022-11-25
      • 2021-10-27
      • 1970-01-01
      • 2022-12-17
      • 2018-03-01
      相关资源
      最近更新 更多