遍历Pandas DataFrame索引时出现警告:应为类型“int”,但得到的是“Hashable”

0ejtzxu1  于 2023-05-05  发布在  其他
关注(0)|答案(1)|浏览(518)

我有一段代码如下:

for index, row in df.iterrows():
        if index == 0:
            continue
        elif df.loc[df.index[index], 'date'] == df.loc[df.index[index - 1], 'date']:
            df.loc[df.index[index], 'desc'] = 'same date'

这个代码可以工作。然而,IDE(PyCharm)警告我,在[index - 1]中,index是一个Hashable,而不是预期的Int。这个类型警告是有意义的,因为.iterrows()返回index作为Hashable,但我们在这里做整数操作。问题是,如何避免这种警告?

mwkjh3gx

mwkjh3gx1#

iterrows很少是解决这类问题的最佳方法。您可以移动整个日期行,并检查上一个日期是否等于当前日期,所有这些都在一个操作中完成。就像你的例子一样,索引0将始终是nan,因为当向前移动日期时,第一个索引没有先前的日期。

import pandas as pd

df = pd.DataFrame({'date':['10-10-22','10-11-22','10-12-22','10-12-22','10-13-22']})

df.loc[df.date.shift().eq(df.date), 'desc'] = 'same date'

输出

date       desc
0  10-10-22        NaN
1  10-11-22        NaN
2  10-12-22        NaN
3  10-12-22  same date
4  10-13-22        NaN

相关问题