您有没有办法根据另一列获取列的子字符串?
import pandas as pd
x = pd.DataFrame({'name':['bernard','brenden','bern'],'digit':[2,3,3]})
x
digit name
0 2 bernard
1 3 brenden
2 3 bern
我期望的是:
for row in x.itertuples():
print row[2][:row[1]]
be
bre
ber
其中结果是基于数字的名称子字符串。
我知道如果我真的想要,我可以根据itertuples函数创建一个列表,但似乎不对,而且,我总是尝试创建一个矢量化方法。
感谢任何反馈。
答案 0 :(得分:6)
使用apply
与axis=1
一起使用行lambda
,以便您访问每列以进行切片:
In [68]:
x = pd.DataFrame({'name':['bernard','brenden','bern'],'digit':[2,3,3]})
x.apply(lambda x: x['name'][:x['digit']], axis=1)
Out[68]:
0 be
1 bre
2 ber
dtype: object