python - 跨pandas 数据框所有列的数学运算,无论其大小如何

标签 python pandas statistics

import pandas as pd
import numpy as np
d = {'col1': [100, 198, 495, 600, 50], 'col2': [99, 200, 500, 594, 100], 'col3': [101, 202, 505, 606, 150]}
df = pd.DataFrame(data=d)
df
由此我得到一个简单的表格:
    col1    col2    col3
0   100     99      101
1   198     200     202
2   495     500     505
3   600     594     606
4   50      100     150
由此,我想取第一行中所有值的 %CV,然后是第二行,依此类推...
我希望无论表有多少列它都能工作。
我可以用几行代码来做到这一点:
df_shape = df.shape
CV_list = []
for i in range(df_shape[0]):
    CV = np.std(df.iloc[i, :], ddof=1) / np.mean(df.iloc[i, :]) * 100
    CV_list.append(str(round(CV, 3)) + ' %')
df["cv"] = CV_list
df
输出:
    col1    col2    col3    CV
0   100     99      101     1%
1   198     200     202     1%
2   495     500     505     1%
3   600     594     606     1%
4   50      100     150     50%
但我想知道 Pandas 是否有一个内置的函数(到目前为止我找不到)。

最佳答案

您可以通过指定 axis=1 对整行进行操作。 .所以得到一系列标准偏差和平均值(对于每一行)并除以。

df['CV'] = df.std(axis=1, ddof=1)/df.mean(axis=1)*100

   col1  col2  col3    CV
0   100    99   101   1.0
1   198   200   202   1.0
2   495   500   505   1.0
3   600   594   606   1.0
4    50   100   150  50.0

关于python - 跨pandas 数据框所有列的数学运算,无论其大小如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67335796/

相关文章:

r - 分类任务中的所有二元预测器

machine-learning - 隆起建模中的多重处理

对频率列表进行 t 检验的 Python 程序

python - 如何在Windows中使用pip?

python - Tensorflow 2 中用于自定义训练循环的 Tensorboard

python - 如何在 Python 中使用没有 0x 的 hex()?

python - 使用条件修改 pandas 数据框中的值

python - 如何按 Pandas 中的子级别索引进行过滤

python - Pandas :获取系列对象中的值(value)标签

python - 将 Bytearray 编码为 UTF-8