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

时间:2015-08-25 21:06:52

标签: python pandas

r是具有五个columsn 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'

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

1 个答案:

答案 0 :(得分:0)

在for循环中,用int:

覆盖数据帧r
if g>64:
    r=(g/64)-1
else:
    r=0

这对一个ID很好,因为在第一次迭代时r仍然是一个数据帧。

它失败了多个ID,因为在第二次迭代中它已被int覆盖,并抛出错误。