每三行数据框乘以不同的值

布赖恩

我有一个9行的数据框。我想将前三行乘以一个值,将后三行乘以第二个值,将第三组3行乘以另一个值。

我正在使用这些变量:

import pandas as pd

df = pd.DataFrame([[i] * 5 for i in range(9)], columns=list('ABCDE'))

a = pd.Series(range(3))

print df

   A  B  C  D  E
0  0  0  0  0  0
1  1  1  1  1  1
2  2  2  2  2  2
3  3  3  3  3  3
4  4  4  4  4  4
5  5  5  5  5  5
6  6  6  6  6  6
7  7  7  7  7  7
8  8  8  8  8  8

我能够使它像这样工作:

for i, e in a.iteritems():
    start, end = i * len(a), (i + 1) * len(a)
    df.iloc[start:end] *= e

print df

    A   B   C   D   E
0   0   0   0   0   0
1   0   0   0   0   0
2   0   0   0   0   0
3   3   3   3   3   3
4   4   4   4   4   4
5   5   5   5   5   5
6  12  12  12  12  12
7  14  14  14  14  14
8  16  16  16  16  16
耶斯列尔

另一种解决方案多dfmulnumpy array通过扩大numpy.repeat

print (df.mul(np.repeat(a.index.values, [3] * len(a)), axis=0))
    A   B   C   D   E
0   0   0   0   0   0
1   0   0   0   0   0
2   0   0   0   0   0
3   3   3   3   3   3
4   4   4   4   4   4
5   5   5   5   5   5
6  12  12  12  12  12
7  14  14  14  14  14
8  16  16  16  16  16

时间-(len(df)=9):

In [20]: %timeit (df.mul(np.repeat(a.index.values, [3] * len(a)), axis=0))
The slowest run took 6.12 times longer than the fastest. This could mean that an intermediate result is being cached.
1000 loops, best of 3: 197 µs per loop

In [21]: %%timeit 
    ...: df.loc[:, :] = (df.values.reshape(3, df.size / 3) * np.arange(3)[:, None]).reshape(df.shape)

__main__:257: DeprecationWarning: using a non-integer number instead of an integer will result in an error in the future
The slowest run took 6.16 times longer than the fastest. This could mean that an intermediate result is being cached.
1000 loops, best of 3: 199 µs per loop

计时代码-(len(df)=90k):

df = pd.DataFrame([[i] * 5 for i in range(9)], columns=list('ABCDE'))
df = pd.concat([df]*10000).reset_index(drop=True)
a = pd.Series(range(3000))
print (df)

时间-(len(df)=90k):

In [24]: %timeit (df.mul(np.repeat(a.index.values, [3] * len(a)), axis=0))
100 loops, best of 3: 3.58 ms per loop

In [33]: %%timeit
    ...: df.loc[:, :] = (df.values.reshape(3, df.size / 3) * np.arange(3)[:, None]).reshape(df.shape)
    ...: 
__main__:257: DeprecationWarning: using a non-integer number instead of an integer will result in an error in the future
100 loops, best of 3: 10.9 ms per loop

In [34]: %%timeit
    ...: df.iloc[:, :] = (df.values.reshape(3, df.size / 3) * np.arange(3)[:, None]).reshape(df.shape)
    ...: 
__main__:257: DeprecationWarning: using a non-integer number instead of an integer will result in an error in the future
100 loops, best of 3: 10.9 ms per loop

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

每三行数据框乘以不同的值

来自分类Dev

Python Pandas最小的三行数据框

来自分类Dev

从数据帧绘制每三行

来自分类Dev

如何将熊猫数据框中的每一行乘以不同的值

来自分类Dev

根据熊猫中的前三行转换数据框

来自分类Dev

用不同维度的熊猫乘以数据框:列数相同,但行数不同

来自分类Dev

加入每三行带有tab(vim)的行

来自分类Dev

pandas - 如何从提供的数据框中提取前三行

来自分类Dev

将 SAS 数据框中的每一列向上移动不同的行数

来自分类Dev

按列值拆分 spark 数据框并在结果中获得每列值的 x 行数

来自分类Dev

三种不同的数据框行组合

来自分类Dev

遍历每一行并比较数据框的列值

来自分类Dev

jQuery将每三行(在进行dom操作之前)上移一行

来自分类Dev

每三行从第二行开始打印文本文件

来自分类Dev

如何在excel中每三行删除两行?

来自分类Dev

将2个不同的数据框乘以相同的维并重复行

来自分类Dev

将每一行数据框转换为地图

来自分类Dev

对每一行数据框的列求和,并在多级索引熊猫数据框中添加新列

来自分类Dev

显示前三行

来自分类Dev

在SQL Server中将每三行分组为一组

来自分类Dev

需要删除文件每三行的最后一列

来自分类Dev

在SQL Server中将每三行分组为一组

来自分类Dev

如何打印用户从键盘输入的某些文本的每三行?

来自分类Dev

将一个数据框的每一行乘以第二个数据框的所有行

来自分类Dev

访问每一行并检查数据框中的每一列值

来自分类Dev

在第二行中查找特定值,并从第三行中显示值

来自分类Dev

在第二行中查找特定值,并从第三行中显示值

来自分类Dev

对于列中等于1的每个值,将值从其下方的第三行提取到新的数据帧(R)

来自分类Dev

熊猫乘以2系列不同维度的数据框

Related 相关文章

  1. 1

    每三行数据框乘以不同的值

  2. 2

    Python Pandas最小的三行数据框

  3. 3

    从数据帧绘制每三行

  4. 4

    如何将熊猫数据框中的每一行乘以不同的值

  5. 5

    根据熊猫中的前三行转换数据框

  6. 6

    用不同维度的熊猫乘以数据框:列数相同,但行数不同

  7. 7

    加入每三行带有tab(vim)的行

  8. 8

    pandas - 如何从提供的数据框中提取前三行

  9. 9

    将 SAS 数据框中的每一列向上移动不同的行数

  10. 10

    按列值拆分 spark 数据框并在结果中获得每列值的 x 行数

  11. 11

    三种不同的数据框行组合

  12. 12

    遍历每一行并比较数据框的列值

  13. 13

    jQuery将每三行(在进行dom操作之前)上移一行

  14. 14

    每三行从第二行开始打印文本文件

  15. 15

    如何在excel中每三行删除两行?

  16. 16

    将2个不同的数据框乘以相同的维并重复行

  17. 17

    将每一行数据框转换为地图

  18. 18

    对每一行数据框的列求和,并在多级索引熊猫数据框中添加新列

  19. 19

    显示前三行

  20. 20

    在SQL Server中将每三行分组为一组

  21. 21

    需要删除文件每三行的最后一列

  22. 22

    在SQL Server中将每三行分组为一组

  23. 23

    如何打印用户从键盘输入的某些文本的每三行?

  24. 24

    将一个数据框的每一行乘以第二个数据框的所有行

  25. 25

    访问每一行并检查数据框中的每一列值

  26. 26

    在第二行中查找特定值,并从第三行中显示值

  27. 27

    在第二行中查找特定值,并从第三行中显示值

  28. 28

    对于列中等于1的每个值,将值从其下方的第三行提取到新的数据帧(R)

  29. 29

    熊猫乘以2系列不同维度的数据框

热门标签

归档