在Python中检查数据帧的第一个值并赋值

在Python中检查数据帧的第一个值并赋值,python,pandas,Python,Pandas,r是具有五列i、j、k、l、m的数据帧 下面是我的代码 for i in pd.unique(r.id): sub=r[(r.id==i)] //subsetting the dataframe for each ID sub=sub.drop_duplicates(["i","j","k","l","m"]) // dropping the duplicates sub['k']=pd.to_datetime(sub['k'],unit='

r是具有五列i、j、k、l、m的数据帧

下面是我的代码

   for i in pd.unique(r.id):
        sub=r[(r.id==i)] //subsetting the dataframe for each ID
        sub=sub.drop_duplicates(["i","j","k","l","m"]) // dropping the duplicates
        sub['k']=pd.to_datetime(sub['k'],unit='s',utc=False)
        g=int(sub.iloc[0]['m']) // want to get the first value of the column
        if g>64:

            r=(g/64)-1
        else:
            r=0
        if(len(sub)>1):
           sub.m=r*64 + m
这对一个ID很有效。当有多个ID时,我得到

Traceback (most recent call last):
  File "C:/project1/Final.py", line 90, in <module>
    sub=r[(r.id==i)]
AttributeError: 'int' object has no attribute 'id'
回溯(最近一次呼叫最后一次):
文件“C:/project1/Final.py”,第90行,在
sub=r[(r.id==i)]
AttributeError:“int”对象没有属性“id”

有人能帮我解决这个问题吗?我想对r数据帧中的所有ID进行循环,以便进行一些计算。

在for循环中,您用int覆盖数据帧r:

if g>64:
    r=(g/64)-1
else:
    r=0
对于一个ID来说,这很好,因为在第一次迭代中,r仍然是一个数据帧


由于在第二次迭代中已被int覆盖,因此在使用多个id时失败,并抛出错误。

在for循环中,您使用int覆盖数据帧r:

if g>64:
    r=(g/64)-1
else:
    r=0
对于一个ID来说,这很好,因为在第一次迭代中,r仍然是一个数据帧


由于在第二次迭代中,它被int覆盖,因此使用多个id失败,并抛出错误。

在这一行
r=(g/64)-1
中,您正在用整数覆盖数据帧
r
。请为它选择一个不同的变量名。@bernie,谢谢。。这是我这边的一个愚蠢的错误。但是我已经在这方面花了很多时间:(不要为此自责。我们都至少犯过一次这样的错误。在这行
r=(g/64)-1
您正在用一个整数覆盖数据帧
r
。请为它选择一个不同的变量名。@bernie谢谢。这是我这边的一个愚蠢的错误。但是我在这方面花了很多时间:(不要为此自责。我们都至少犯过一次这样的错误。非常感谢!愚蠢的错误是:(非常感谢!愚蠢的错误是:(