在特定分钟删除行
Dropping rows at specific minutes
我正在尝试在特定分钟 (05,10, 20) 删除行
我有日期时间作为索引
df5['Year'] = df5.index.year
df5['Month'] = df5.index.month
df5['Day']= df5.index.day
df5['Day_of_Week']= df5.index.day_name()
df5['hour']= df5.index.strftime('%H')
df5['Min']= df5.index.strftime('%M')
df5
那我运行下面
def clean(df5):
for i in range(len(df5)):
hour = pd.Timestamp(df5.index[i]).hour
minute = pd.Timestamp(df5.index[i]).minute
if df5 = df5[(df5.index.minute ==5) | (df5.index.minute == 10)| (df5.index.minute == 20)]
df.drop(axis=1, index=i, inplace=True)
它返回无效的语法错误。
您可以使用布尔索引来完成它,假设索引已经被解析为日期时间。
df5 = df5[~((df5.index.minute == 5) | (df5.index.minute == 10) | (df5.index.minute == 20))]
或同一个答案的反面:
df5 = df5[(df5.index.minute != 5) | (df5.index.minute != 10) | (df5.index.minute != 20)]
一般来说,在 IF
语句中组合逻辑 OR
的正确语法如下:
today = 'Saturday'
if today=='Sunday' OR today=='Saturday':
print('Today is off. Rest at home')
在你的情况下,你可能应该使用这样的东西:
if df5 == df5[(df5.index.minute ==5)] OR df5[(df5.index.minute ==10)]
......
最后说明:
您在使用 ==
和 =
时犯了一些错误
在Python(以及许多其他编程语言)中,单个等号=
用于为变量赋值,而使用两个连续的等号==
检查 2 个表达式是否给出相同的值。
= is an assignment operator
== is an equality operator
这里不需要循环,也not recommended.
使用DatetimeIndex.minute
with Index.isin
and inverted mask by ~
filtering in boolean indexing
:
df5 = df5[~df5.index.minute.isin([5, 10, 20])]
为了重用列 df5['Min']
使用字符串值:
df5 = df5[~df5['Min'].isin(['05', '10', '20'])]
总计:
def clean(df5):
return df5[~df5.index.minute.isin([5, 10, 20])]
我正在尝试在特定分钟 (05,10, 20) 删除行 我有日期时间作为索引
df5['Year'] = df5.index.year
df5['Month'] = df5.index.month
df5['Day']= df5.index.day
df5['Day_of_Week']= df5.index.day_name()
df5['hour']= df5.index.strftime('%H')
df5['Min']= df5.index.strftime('%M')
df5
那我运行下面
def clean(df5):
for i in range(len(df5)):
hour = pd.Timestamp(df5.index[i]).hour
minute = pd.Timestamp(df5.index[i]).minute
if df5 = df5[(df5.index.minute ==5) | (df5.index.minute == 10)| (df5.index.minute == 20)]
df.drop(axis=1, index=i, inplace=True)
它返回无效的语法错误。
您可以使用布尔索引来完成它,假设索引已经被解析为日期时间。
df5 = df5[~((df5.index.minute == 5) | (df5.index.minute == 10) | (df5.index.minute == 20))]
或同一个答案的反面:
df5 = df5[(df5.index.minute != 5) | (df5.index.minute != 10) | (df5.index.minute != 20)]
一般来说,在 IF
语句中组合逻辑 OR
的正确语法如下:
today = 'Saturday'
if today=='Sunday' OR today=='Saturday':
print('Today is off. Rest at home')
在你的情况下,你可能应该使用这样的东西:
if df5 == df5[(df5.index.minute ==5)] OR df5[(df5.index.minute ==10)]
......
最后说明:
您在使用 ==
和 =
在Python(以及许多其他编程语言)中,单个等号=
用于为变量赋值,而使用两个连续的等号==
检查 2 个表达式是否给出相同的值。
= is an assignment operator
== is an equality operator
这里不需要循环,也not recommended.
使用DatetimeIndex.minute
with Index.isin
and inverted mask by ~
filtering in boolean indexing
:
df5 = df5[~df5.index.minute.isin([5, 10, 20])]
为了重用列 df5['Min']
使用字符串值:
df5 = df5[~df5['Min'].isin(['05', '10', '20'])]
总计:
def clean(df5):
return df5[~df5.index.minute.isin([5, 10, 20])]