Python 熊猫在数据帧和序列(列)之间相乘

Python 熊猫在数据帧和序列(列)之间相乘,python,numpy,pandas,Python,Numpy,Pandas,例如,我有一个数据帧,如 [ 2 2 2 3 3 3 4 4 4 5 5 5] 我有一个系列 我怎样才能拿到票 [ 4 4 4 3 3 3 8 8 8 5 5 5] ?您可以尝试,如果需要将数据帧转换为numpy数组请使用: 您可以通过以下方式实现: 计时: In [44]: %timeit df.mul(s, axis=0) 1000 loops, best of 3: 197 us per loop In [45]: %timeit df.mul(s, ax

例如,我有一个数据帧,如

[ 2 2 2
  3 3 3 
  4 4 4
  5 5 5] 
我有一个系列 我怎样才能拿到票

[ 4 4 4
  3 3 3
  8 8 8
  5 5 5]

您可以尝试,如果需要将
数据帧
转换为
numpy数组
请使用:

您可以通过以下方式实现:

计时:

In [44]: %timeit df.mul(s, axis=0)
1000 loops, best of 3: 197 us per loop

In [45]: %timeit df.mul(s, axis=0).values
1000 loops, best of 3: 210 us per loop

In [46]: %timeit df.values * s.values[:,None]
100000 loops, best of 3: 16.4 us per loop

In [48]: %timeit pd.DataFrame(df.values * s.values[:,None])
10000 loops, best of 3: 164 us per loop

非常感谢您提供numpy方法。
In [36]: df.values
Out[36]:
array([[2, 2, 2],
       [3, 3, 3],
       [4, 4, 4],
       [5, 5, 5]], dtype=int64)

In [37]: s.values
Out[37]: array([2, 1, 2, 1], dtype=int64)

In [38]: df.values * s.values[:,None]
Out[38]:
array([[4, 4, 4],
       [3, 3, 3],
       [8, 8, 8],
       [5, 5, 5]], dtype=int64)
In [44]: %timeit df.mul(s, axis=0)
1000 loops, best of 3: 197 us per loop

In [45]: %timeit df.mul(s, axis=0).values
1000 loops, best of 3: 210 us per loop

In [46]: %timeit df.values * s.values[:,None]
100000 loops, best of 3: 16.4 us per loop

In [48]: %timeit pd.DataFrame(df.values * s.values[:,None])
10000 loops, best of 3: 164 us per loop