python - 如何将数据帧的所有数字列乘以一维数组?
问题描述
我有一个df
形状为 rxc 的数据框,有 1 个文本列(具有非唯一值),其他列都是浮动的。然后我有一个大小为 r 的数组mult
。我希望数据框的每个数字列都乘以数组的相应项。
即期望的输出是 value_1[0] 应该变成 value_1[0] * mult[0],value_2[0] 应该变成 value_2[0] * mult[0],等等。
有什么简单的方法可以做到这一点?
我已经尝试了下面的代码,但它不起作用。
import numpy as np
import pandas as pd
df = pd.DataFrame()
df['txt']=['a','b','c','a','d']
df['value_1'] = np.arange(0,5)
df['value_2'] = np.arange(10,15)
mult = np.array([1,1,0,0,1])
newdf = df * mult
newdf2 = df.set_index('txt') * np.array
解决方案
mult
在进行乘法之前,您只需要表示为列向量。所以以下应该工作:
df * mult[:,None]
研究mult.shape
并mult[:,None].shape
查看差异。
推荐阅读
- html - RegEx - 排除字符和最小字母数
- verilog - 在verilog中创建一个可变宽度的常量向量
- php - 尝试将数据插入 MySQL 时出错
- javascript - 如何使用javascript将html保存到服务器上文件夹中的.html文件
- algorithm - 对元素数组的多个查询更新
- go - Apache Beam - 使用 Go SDK 进行 API 调用的批处理元素?
- rstan - “创建采样器失败”时调试
- rust - 我应该更喜欢 path.display() 而不是 debug {:?} 格式吗?
- php - 如何防止这样的 unicode 字符Ả̴̢̦̙̬̲̯̖̲̟̟̬̲̻̣̩͕͍̦͍̮̠̤͇̿́̾͋́̾̎̔̐̓̾̐̉͒̅͛̈́̀̇͋͋̔̕͘͝͝͝ 在我的网站上以及它们为什么存在?
- javascript - 为什么 new Array(3) 函数不会在数组中返回 3 个未定义的值?