benpanda
[ 2 2 2
3 3 3
4 4 4
5 5 5]
gibi dataframe ve bir serise sahip dataframe ve seri (kolon) ile çarpma [2 1 2 1] I
[ 4 4 4
3 3 3
8 8 8
5 5 5]
elde nasıl
?
benpanda
[ 2 2 2
3 3 3
4 4 4
5 5 5]
gibi dataframe ve bir serise sahip dataframe ve seri (kolon) ile çarpma [2 1 2 1] I
[ 4 4 4
3 3 3
8 8 8
5 5 5]
elde nasıl
?
Sen mul
deneyebilir ve dönüştürmek gerekirse DataFrame
values
kullanım numpy array
için:
print df
0 1 2
0 2 2 2
1 3 3 3
2 4 4 4
3 5 5 5
s = pd.Series([2, 1, 2, 1])
print s
0 2
1 1
2 2
3 1
dtype: int64
print df.mul(s, axis=0)
0 1 2
0 4 4 4
1 3 3 3
2 8 8 8
3 5 5 5
print df.mul(s, axis=0).values
[[4 4 4]
[3 3 3]
[8 8 8]
[5 5 5]]
Sen numpy broadcasting kullanarak bunu yapabilir:
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)
Zamanlama:
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
Sayısal yöntemi sunmak için çok teşekkürler. –
Çok teşekkürler. Bu benim için mükemmel çalışıyor. –
Daha temiz bir şekilde. –