python-TypeError:“ Timestamp”对象不可迭代

时间:2019-08-26 10:46:04

标签: python pandas

我有一个数据框,并取其第一行。

df = pd.DataFrame({'Date': ['2019-01-02', '2019-01-03', '2019-01-04', '01/07/2019', '01/08/2019', '01/09/2019', '01/10/2019', '01/11/2019', '01/14/2019', '24/08/2019']})

df['Date'] = pd.to_datetime(df["Date"]) 

a = df['Date'].iloc[0]

我正在尝试遍历df ['Date']以仅包括工作日。如果使用带有通行证的If语句,那么在周末将不给出任何结果。我现在正在尝试使用需要循环的继续。但是,每次循环浏览时,都会得到TypeError:“ Timestamp”对象不可迭代

def weekday_end(day_now):

    d = day_now
    for row in d:
        if d.isoweekday()==6:
            continue
        elif d.isoweekday()==7:
            continue
        else:
            return d

for rows in a:
    df = weekday_end(rows)
    print (df)

1 个答案:

答案 0 :(得分:2)

您正在尝试遍历单个值,在此您需要整个列。可以通过删除.iloc[0]来解决此问题:

a = df['Date']

那仍然不能让您的代码正常工作,因为您的weekday_end()函数本身将尝试再次遍历单个值,您只需要使用:

for value in a:
    if value.weekday < 6:
        print(value)

但是,使用向量化操作要更快

df['Date'][df['Date'].dt.weekday < 6]

这会产生一系列的工作日时间戳记。如果要基于工作日选择数据框中的行,请将过滤器应用于整个数据框:

df[df['Date'].dt.weekday < 6]