所以我想將資料幀的每一行與乘數向量相乘,我正在管理,但它看起來很難看。這可以改進嗎?
import pandas as pd
import numpy as np
# original data
df_a = pd.DataFrame([[1,2,3],[4,5,6]])
print(df_a, '\n')
# multiplier vector
df_b = pd.DataFrame([2,2,1])
print(df_b, '\n')
# multiply by a list - it works
df_c = df_a*[2,2,1]
print(df_c, '\n')
# multiply by the dataframe - it works
df_c = df_a*df_b.T.to_numpy()
print(df_c, '\n')
uj5u.com熱心網友回復:
“它看起來很丑”是主觀的,也就是說,如果你想將資料幀的所有行與你需要的其他東西相乘:
兼容形狀的資料框(和兼容的索引,因為它們在 pandas 操作之前對齊,這就是為什么
df_a*df_b.T只適用于公共索引0:)一維向量,在 pandas 中是一個系列
使用系列:
df_a*df_b[0]
輸出:
0 1 2
0 2 4 3
1 8 10 6
當然,如果您真的不需要 2D 容器,最好直接定義 Series:
s = pd.Series([2,2,1])
df_a*s
uj5u.com熱心網友回復:
只是為了美麗,您可以使用Einstein summation:
>>> np.einsum('ij,ji->ij', df_a, df_b)
array([[ 2, 4, 3],
[ 8, 10, 6]])
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/412353.html
標籤:
上一篇:用偶數和奇數格式化Numpy陣列
