【问题标题】:How to loop .iloc index values in pandas? [duplicate]如何在熊猫中循环 .iloc 索引值? [复制]
【发布时间】:2021-12-01 03:57:21
【问题描述】:

我有两个数据框,其中一个数据框有 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.iloc[0][0]) / (df1.iloc[0][1]))

输出是:

-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['C1'][i] - df1.iloc[0][0]) / (df1.iloc[0][1]))
    print((df['C2'][i] - df1.iloc[1][0]) / (df1.iloc[1][1]))
    print((df['C3'][i] - df1.iloc[2][0]) / (df1.iloc[2][1]))
    print((df['C4'][i] - df1.iloc[3][0]) / (df1.iloc[3][1]))

谁能告诉我如何循环 .iloc 值,这样代码会变得更简单

【问题讨论】:

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


【解决方案1】:

尝试动态生成列名,如 C1、C2,并使用一个打印语句并循环遍历所有列


import pandas as pd

data = [[1,2,3,4], [2,3,4,5], [3,4,5,6],[4,5,6,7]]
df = pd.DataFrame(data, columns = ['C1','C2','C3','C4'])

data1 = [[0.1, 0.2], [0.2,0.3], [0.3,0.4],[0.4,0.5]]
df1 = pd.DataFrame(data1, columns = ['Mean','Dev'])

for i in range(0, len(df)):
    for j in range(0,len(df.columns)):
        colName = 'C'+str(j+1)
        print((df[colName][i] - df1.iloc[j][0]) / (df1.iloc[j][1]))

输出

4.5
6.0
6.75
7.2
9.499999999999998
9.333333333333334
9.25
9.2
14.499999999999998
12.666666666666666
11.75
11.2
19.5
16.0
14.25
13.2

【讨论】:

    猜你喜欢
    • 2021-05-17
    • 2019-10-05
    • 2019-05-03
    • 2015-11-22
    • 2018-02-03
    • 2021-12-06
    • 2020-05-08
    • 2019-07-27
    • 2013-12-27
    相关资源
    最近更新 更多