I have a pandas DataFrame as follow:
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和object),也在此上下文之外(例如使用for循环)可以完成工作,但我更喜欢利用DataFrame的一行代码。 我做错了什么?