python - 如何将数据框除以同一数据框的另一列
问题描述
由于对循环/迭代/矩阵/等缺乏了解,我陷入了数据帧的问题。
所以我有一个数据框或一个数组(不管怎样):
initial = [[1,2,3,3], [4,5,6,6],[7,8,9,9]]
我需要将 array/df 中除最后一列之外的所有值逐行除以最后一列的值,以便获得结果:
result = [[0.33, 0.66, 1], [0.66, 0.83, 1],[0.77, 0.88,1]]
因此,例如,我将使用第一个列表,如下所示:1/3、2/3、3/3,然后取下一个列表并划分 4/6、5/6、6/6,依此类推...
我想要么将结果存储在单独的 df/array 中,要么覆盖原始的 df/array,无论哪种效果最好。注意(如果重要):最后一列不包含 0(空值)或 NaN,并且值等于或大于前面列中的值(基于每一行)。
我还想知道我是否可以根据第 0 列之前的列确定要经过的行(最初我删除了此列以仅包含数字并稍后添加,但如果将计算与包含唯一字符串的该列相关的行(它们被设置为我的原始数据框的索引)
解决方案
- OP 中的样本数据是列表的列表,而不是数组。
- 以下示例将使用 pandas 数据框,因为这就是问题的标记。
.div()
与_axis=0
- 可以使用
.iloc
或.loc
选择列[]
。- 按标签选择
- 如果将计算与包含唯一字符串的此列相关的行:意味着按标签选择 -
.loc
- 如果将计算与包含唯一字符串的此列相关的行:意味着按标签选择 -
- 按位置选择
- 通过可调用选择
- SO:如何根据列值从 DataFrame 中选择行
- 按标签选择
- 添加
.round(2)
到末尾result
以设置小数位数。 - 我还想知道我是否可以根据第 0 列之前的列确定要经过的行:即
df.index
df.iloc[:, :3].div(df.index, axis=0)
import pandas as pd
# sample dataframe
df = pd.DataFrame({0: [1, 4, 7], 1: [2, 5, 8], 2: [3, 6, 9], 3: [3, 6, 9]})
# display(df)
0 1 2 3
1 2 3 3
4 5 6 6
7 8 9 9
# divide
result = df.iloc[:, :3].div(df[3], axis=0)
# display(result)
0 1 2
0.333333 0.666667 1.0
0.666667 0.833333 1.0
0.777778 0.888889 1.0
推荐阅读
- shortcut - 我的 Siri Custom Intent 没有显示 Siri Shortcuts App 选项?
- postgresql - PostgreSQL 错误:在表上插入或更新违反外键约束
- android - Windows/React Native 无法创建 ADB Bridge 错误
- bash - 循环中的 I/O 重定向
- nativescript - Nativescript ios 状态保存与恢复
- android - 如何在 Row 上添加 TextField?
- c - 如何删除数组中的最后一个元素?
- python - 名称 'sp' 的定义不明确
- regex - Notepad ++如何删除没有2个空格字符的行
- mysql - 如何检查是否有一些录音共享相同的名称,但它们在mysql中有不同的类型