【问题标题】:Iteration, calculation via pandas迭代,通过 pandas 计算
【发布时间】:2021-02-24 05:20:41
【问题描述】:

我是 Python 新手,我想问一些问题。

我的代码读取一个 csv 文件。我想使用一列。我想使用一个方程,根据我要使用的列的值计算几个值。我正在使用 for 和 if 命令。

我的代码

import pandas as pd
import matplotlib as mpl
import numpy as np

dfArxika = pd.read_csv('AIALL.csv', usecols=[0,1,2,3,4,5,6,7,8,9,10], header=None, index_col=False)
print(dfArxika.columns)

A=dfArxika[9]

for i in A:
    if (A(i)>=4.8 and A(i)<66):
        IA=(2.2*log10(A(i)/66)+5.5)
    elif A(i)>=66:
        IA=3.66*log10(A(i)/66)+5.5
    else:
        IA=2.2*log10(A(i)/66)+5.5

但命令窗口显示错误:

TypeError:“系列”对象不可调用

你能帮帮我吗?

【问题讨论】:

  • A(i) 不是您索引的方式。这是A[i]
  • 命令窗口显示:TypeError: cannot do label indexing on with these indexers [122.59] of
  • 您正在迭代 dfArxika[9] 的值并使用这些值来索引您的数据框 A。dfArxika[9] 包含浮点数,而您的数据框 A 的索引包含整数,这就是您的原因出现错误。

标签: python pandas for-loop if-statement iteration


【解决方案1】:

正如 cmets 中提到的 @rdas,您使用括号 () 而不是括号 [] 来索引列的值。

我不确定您的示例中的IA 是什么,但这可能有效:

for i in range(len(dfArxika)):
    if (A.loc[i, 9]>=4.8 and A.loc[i, 9]<66):
        IA=(2.2*log10(A.loc[i, 9]/66)+5.5)
    elif A.loc[i, 9]>=66:
        IA=3.66*log10(A.loc[i, 9]/66)+5.5
    else:
        IA=2.2*log10(A.loc[i, 9]/66)+5.5

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-09
    • 2021-08-01
    • 2021-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多