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

假设你有一个大熊猫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  8

10  a  b  c

4   d  e  f

2   g  h  i

现在假设我们要基于比较索引和列以某种方式操作数据框。考虑以下。


如果索引大于列,则用 'k' 替换字母:


    2  4  8

10  k  k  k

4   k  e  f

2   g  h  i

其中索引等于列替换字母为“U”:


    2  4  8

10  k  k  k

4   k  U  f

2   U  h  i

列大于索引的地方用“Y”替换字母:


    2  4  8

10  k  k  k

4   k  U  Y

2   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) 如何以这种方式进行比较没有任何感觉


白猪掌柜的
浏览 425回答 3
3回答

慕盖茨4494581

不确定实现这一点的最快方法,但一种非常简单的方法是像这样迭代数据帧: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'
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python