在apply函数中访问索引
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在apply函数中访问索引相关的知识,希望对你有一定的参考价值。
早上好。
我有一点问题,我确信它有一个简单的解决方案,但我找不到它。
我有一个这样的数据帧:
df =
num unit
0 10 minutes
1 20 seconds
2 30 newtons
3 10 seconds
并且,由于无关紧要的原因,我想重写num
列,添加相应的单位,得到下一个结果:
df =
num unit
0 '10 minutes' minutes
1 '20 seconds' seconds
2 '30 newtons' newtons
3 '10 seconds' seconds
我正在使用以下代码:
df.num = df.num.apply(lambda x: '{n} {u}'.format(n = x, u = unidecode(df.loc[df[df.num == x].index.values[0], 'unit'])))
问题出现在第一列中有2个或更多相等的值,比如第0行和第3行,所以由于...values[0]
,我错误的最终结果是:
df =
num unit
0 '10 minutes' minutes
1 '20 seconds' seconds
2 '30 newtons' newtons
3 '10 minutes' seconds
非常感谢你提前。
答案
在此处应用不是必需的,将列转换为字符串并与连接:
df['num'] = df['num'].astype(str) + ' ' + df['unit']
print (df)
num unit
0 10 minutes minutes
1 20 seconds seconds
2 30 newtons newtons
3 10 seconds seconds
如果需要申请某些原因使用DataFrame.apply
与axis=1
进行行处理和使用标量,所以通过str
将整数转换为字符串:
df['num'] = df.apply(lambda x: str(x['num']) + ' ' + x['unit'], axis=1)
#alternative
#df['num'] = df.apply(lambda x: ' '.join([str(x['num']), x['unit']]), axis=1)
以上是关于在apply函数中访问索引的主要内容,如果未能解决你的问题,请参考以下文章
如何在 pandas 中使用 apply 函数,同时将索引映射到两个不同的数据帧?