【问题标题】:Set column value based on indexed datetime filter根据索引日期时间过滤器设置列值
【发布时间】:2019-01-09 05:16:21
【问题描述】:

我想在 python、pandas 中根据日间过滤器(日期时间值在索引列中)填充列的值。

我面临的问题是我的日期时间已经设置为索引,因此,我解决这个问题的“旧方法”不起作用。

到目前为止,对于类似的问题我都在使用这种方法:

df.loc[df['filter'] > 0, 'column_value'] = 1

但是现在“过滤器”列实际上是索引,我在两个日期之间过滤它,所以首先没有布尔值。

所以我尝试了:

df[df['2017.01.19  12:30:00':'2017.01.19  15:10:00'], "column_value"] = "something"

但我收到 TypeError: 'DataFrame' objects are mutable, thus they cannot be hashed 类型错误。

如果我尝试:df[df['2017.01.19 12:30:00':'2017.01.19 15:10:00']], 我收到 Must pass DataFrame with boolean values only 错误。

所以请帮助我,让我知道如何根据索引的 DateTime 过滤器设置列的值。

提前谢谢你。

【问题讨论】:

    标签: python pandas datetime filter


    【解决方案1】:

    DataFrame.loc- 一起使用,而不是.

    df.loc['2017-01-19 12:30:00':'2017-01-19 15:10:00', "column_value"] = "something"
    

    示例

    idx =  pd.date_range('2017-01-19 12:00:00', '2017-01-19 16:30:00', freq='10T')
    df = pd.DataFrame({'column_value': ['a'] * len(idx)}, index = idx)
    
    df.loc['2017-01-19 12:30:00':'2017-01-19 15:10:00', "column_value"] = "something"
    print (df)
                        column_value
    2017-01-19 12:00:00            a
    2017-01-19 12:10:00            a
    2017-01-19 12:20:00            a
    2017-01-19 12:30:00    something
    2017-01-19 12:40:00    something
    2017-01-19 12:50:00    something
    2017-01-19 13:00:00    something
    2017-01-19 13:10:00    something
    2017-01-19 13:20:00    something
    2017-01-19 13:30:00    something
    2017-01-19 13:40:00    something
    2017-01-19 13:50:00    something
    2017-01-19 14:00:00    something
    2017-01-19 14:10:00    something
    2017-01-19 14:20:00    something
    2017-01-19 14:30:00    something
    2017-01-19 14:40:00    something
    2017-01-19 14:50:00    something
    2017-01-19 15:00:00    something
    2017-01-19 15:10:00    something
    2017-01-19 15:20:00            a
    2017-01-19 15:30:00            a
    2017-01-19 15:40:00            a
    2017-01-19 15:50:00            a
    2017-01-19 16:00:00            a
    2017-01-19 16:10:00            a
    2017-01-19 16:20:00            a
    2017-01-19 16:30:00            a
    

    【讨论】:

    • 谢谢,明天试试再回来。
    猜你喜欢
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 2021-05-24
    相关资源
    最近更新 更多