为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas DataFrame 根据列、索引值比较更改值

Pandas DataFrame 根据列、索引值比较更改值

白猪掌柜的 2021-08-05 17:14:38
假设你有一个大熊猫DataFrame具有某种主体数据和数字的column和index名称。>>> data=np.array([['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']])>>> columns = [2, 4, 8]>>> index = [10, 4, 2]>>> df = pd.DataFrame(data, columns=columns, index=index)>>> df    2  4  810  a  b  c4   d  e  f2   g  h  i现在假设我们要基于比较索引和列以某种方式操作数据框。考虑以下。如果索引大于列,则用 'k' 替换字母:    2  4  810  k  k  k4   k  e  f2   g  h  i其中索引等于列替换字母为“U”:    2  4  810  k  k  k4   k  U  f2   U  h  i列大于索引的地方用“Y”替换字母:    2  4  810  k  k  k4   k  U  Y2   U  Y  Y为了让这个问题对所有人有用:进行此替换的快速方法是什么?进行此替换的最简单方法是什么?来自最小示例的速度结果耶斯莱尔:556 µs ± 66.1 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)用户3471881:329 µs ± 11.4 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)雷木:4.65 ms ± 252 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)但是,我对 a) 是否可能或 b) 如何以这种方式进行比较没有任何感觉
查看完整描述

3 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

不确定实现这一点的最快方法,但一种非常简单的方法是像这样迭代数据帧:


for i in df.index:

    for j in df.columns:

        if i>j:

            df.loc[i,j]='k'

        elif j>i:

            df.loc[i,j]='y'

        else:

            df.loc[i,j]='u'


查看完整回答
反对 回复 2021-08-05
  • 3 回答
  • 0 关注
  • 424 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号