微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。