Python 2.7 Python Pandas-n X m数据帧乘以1 X m数据帧

Python 2.7 Python Pandas-n X m数据帧乘以1 X m数据帧,python-2.7,pandas,multiple-columns,Python 2.7,Pandas,Multiple Columns,在Python中,我试图将10X7数据帧乘以1X7数据帧 以下是我所拥有的: df = pd.DataFrame(np.random.rand(10,7),columns=list('ABCDEFG')) df_1 = pd.DataFrame(np.random.rand(1,7),columns=list('ABCDEFG')) 我试过这个: df_prod = pd.DataFrame(columns=df) for i in range(0, df.shape[0]): df_

在Python中,我试图将10X7数据帧乘以1X7数据帧

以下是我所拥有的:

df = pd.DataFrame(np.random.rand(10,7),columns=list('ABCDEFG'))
df_1 = pd.DataFrame(np.random.rand(1,7),columns=list('ABCDEFG'))
我试过这个:

df_prod = pd.DataFrame(columns=df)
for i in range(0, df.shape[0]):
    df_prod.iloc[i,:] = df[i,:].tolist()*df_1.iloc[0,:].tolist()
但我得到了这个错误信息:

Traceback (most recent call last):
  File "C:\Python27\test.py", line 29, in <module>
    df_elem.iloc[i,:] = df_val[i,:].tolist()*df_cf.iloc[0,:].tolist()
  File "C:\python27\lib\site-packages\pandas\core\frame.py", line 1678, in __getitem__
    return self._getitem_column(key)
  File "C:\python27\lib\site-packages\pandas\core\frame.py", line 1685, in _getitem_column
    return self._get_item_cache(key)
  File "C:\python27\lib\site-packages\pandas\core\generic.py", line 1050, in _get_item_cache
    res = cache.get(item)
TypeError: unhashable type

有没有一种简单的方法可以在Python中实现此乘法?

如果要按行执行乘法,可以尝试以下方法:

%timeit df_prod = df.apply(lambda x: x * df_1.ix[0],axis = 1)
100 loops, best of 3: 6.21 ms per loop
但是,按列进行乘法要快得多:

%timeit = df_prod = pd.DataFrame({c:df[c]* df_1[c].ix[0] for c in df.columns})
100 loops, best of 3: 2.4 ms per loop
像这样:

%%timeit
df.mul(df_1.ix[0])
1000 loops, best of 3: 251 µs per loop
检查结果是否匹配:

all(df.mul(df_1.ix[0]) == df.apply(lambda x: x * df_1.ix[0],axis = 1))
True

这避免了应用

多谢各位。我在Pandas文档中查找类似的内容,但找不到。回答得好!
all(df.mul(df_1.ix[0]) == df.apply(lambda x: x * df_1.ix[0],axis = 1))
True