【问题标题】:How to iterate two or more columns and perform analysis in pandas?如何迭代两列或更多列并在 pandas 中执行分析?
【发布时间】:2021-12-01 03:26:50
【问题描述】:

我有两个数据框,其中一个数据框有 2 列 11 行,另一个数据框有 2 列 2 行。

print(df)

输出是:

    C1  C2
0   1   1
1   2   2
2   3   3
3   4   4
4   5   5
5   6   6
6   7   7
7   9   9
8   11  13
9   10  11
10  12  11

第二个数据帧是

打印(df1)

输出是:

    Mean Dev
0   2    0.5
1   1    1.0

我正在尝试从 df 的第 1 列中减去每个值,其中第 1 列第 1 行平均值和第 2 列第 1 行 Dev 值相除。下面是代码

for i in range(0, len(df)):
    print((df['C1'][i] - df1['Mean'][0]) / (df1['Dev'][0]))

输出是:

-2.0
0.0
2.0
4.0
6.0
8.0
10.0
14.0
18.0
16.0
20.0

我的问题是如何针对 Mean 和 Dev 列对每一列执行减法和除法。比如我正在尝试写代码

for i in range(0, len(df)):
        print((df['C2'][i] - df1['Mean'][1]) / (df1['Dev'][1]))

紧随其后

for i in range(0, len(df)):
        print((df['C3'][i] - df1['Mean'][2]) / (df1['Dev'][2]))

紧随其后

for i in range(0, len(df)):
        print((df['C4'][i] - df1['Mean'][3]) / (df1['Dev'][3]))

在上面的代码中,我们循环 df 值。如何循环 df1 值?

【问题讨论】:

    标签: python python-3.x pandas dataframe loops


    【解决方案1】:

    如果您需要将结果存储在列表中:

    l = []
    l = (df.loc[:, 'a'] - df2.at[0, 'c1'])/ df2.at[0, 'c2']
    

    如果您需要将新值存储在新数据框中:

    df3 = pd.DataFrame(columns=['c1'])
    df3.loc[:,'c1'] = (df.loc[:, 'C1'] - df2.at[0, 'Mean'])/ df2.at[0, 'Dev']
    

    【讨论】:

      【解决方案2】:

      您可以通过以下方式在没有 for 循环的情况下利用元素减法来完成此操作:

      import pandas as pd
      
      #Example data
      df = pd.DataFrame({'C1': [i for i in range(1, 12)], 'C2': [i for i in range(2, 13)]})
      #Example mean and standard deviation
      df1 = pd.DataFrame({'Mean': [2, 1], 'Dev': [0.5, 1]})
      
      #Transpose the mean column and subtract from the original dataframe
      #Transpose the standard deviation column and divide
      df_out = (df - df1['Mean'].to_numpy().T)/df1['dev'].to_numpy().T
      

      这是假设均值/标准差矩阵中的行数等于数据矩阵中的列数。它还假设均值/标准差矩阵中的每个行号对应于数据矩阵中相同的列号。

      【讨论】:

      • 谢谢你,伙计!它很简单,效果很好。
      猜你喜欢
      • 1970-01-01
      • 2018-07-19
      • 1970-01-01
      • 2018-03-02
      • 1970-01-01
      • 2010-10-07
      • 2020-05-10
      • 2018-08-10
      • 1970-01-01
      相关资源
      最近更新 更多