如何在pandas中将一列中的字符串按另一列切片

2024-10-04 01:29:59 发布

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

df=pd.DataFrame({'A':['abcde','fghij','klmno','pqrst'], 'B':[1,2,3,4]})

我想把A列按B列分片,例如:abcde[:1]=a, klmno[:3]=klm 但有两种说法都失败了:

^{pr2}$

TypeError: string indices must be integers

以及

df['new_column']=df['A'].str[:df['B']]

new_column返回NaN

尝试获取new_column

      A    B  new_column
0   abcde  1     a
1   fghij  2     fg
2   klmno  3     klm
3   pqrst  4     pqrs

非常感谢你


Tags: dataframedfnewstringcolumnpd分片indices
2条回答

通过使用zip。希望这个解决方案对您有帮助。在

enter image description here

您需要在^{}方法中使用axis=1来遍历行:

df['new_column'] = df.apply(lambda r: r.A[:r.B], axis=1)
df
#       A   B   new_column
#0  abcde   1   a
#1  fghij   2   fg
#2  klmno   3   klm
#3  pqrst   4   pqrs

使用zip是一个不那么惯用但通常更快的解决方案:

^{pr2}$
^{3}$

相关问题 更多 >