gpt4 book ai didi

python - 将 DataFrame 的每 n 个索引乘以(或除以)数组中的常量

转载 作者:行者123 更新时间:2023-12-01 01:06:27 27 4
gpt4 key购买 nike

我有一个 DataFrame,我想将每 n 个索引乘(或除)数组中的特定数字。下面是一个简短的示例,其中字母只是数字。

df=

   0  1
0 A B
1 C D
2 E F
3 G H
4 I J
5 K L
6 M N
7 O P

DataFrame(或 numpy 数组):

   0  1
0 W X
1 Y Z

我希望获得以下结果:

结果=

   0     1
0 A/W B/X
1 C/Y D/Z
2 E/W F/X
3 G/Y H/Z
4 I/W J/X
5 K/Y L/Z
6 M/W N/X
7 O/Y P/Z

有没有办法使用df.groupy(df % 2).agg()df.groupy(df % 2).apply()来解决这个问题?我正在处理一个巨大的 DataFrame,我相信如果我应用 for 循环将花费比所需更多的时间。

我知道我必须使用一个函数,但我无法编写一个函数来实现我正在寻找的功能。

谢谢。

最佳答案

尝试以下代码:

首先定义要应用于每个组的函数:

def dv(tbl):
return tbl.divide(df2.values, axis='columns')

df2 被转换为基础以便“释放”自己从索引对齐。

然后我们读取df2中的行数(一个组的大小在 df 分组中):

len2 = len(df2.index)

然后可以用一条指令执行实际的除法:

df.groupby(np.arange(len(df.index)) // len2).apply(dv)

np.arange(len(df.index))//len2 提供将 df 划分为包含与 df2 相同行数的组。

每个组都应用了dv函数(上面定义)。

出于测试目的,我创建了第一个 DataFrame (df):

      0     1
0 10.0 11.0
1 12.0 13.0
2 14.0 15.0
3 16.0 17.0
4 18.0 19.0
5 20.0 21.0
6 22.0 23.0
7 24.0 25.0

第二个 (df2) 为:

     0    1
0 2.0 2.5
1 3.0 3.5

结果是:

           0         1
0 5.000000 4.400000
1 4.000000 3.714286
2 7.000000 6.000000
3 5.333333 4.857143
4 9.000000 7.600000
5 6.666667 6.000000
6 11.000000 9.200000
7 8.000000 7.142857

当然,上面的代码是用于除法的。

如果你想乘法,那么定义一个函数:

def ml(tbl):
return tbl.multiply(df2.values, axis='columns')

并调用它:

df.groupby(np.arange(len(df.index)) // len2).apply(ml)

关于python - 将 DataFrame 的每 n 个索引乘以(或除以)数组中的常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55304606/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com