You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
import pandas as pd
|
|
|
|
|
|
def drop_unique_columns(df: pd.DataFrame):
|
|
nunique = df.nunique() # 计算每一列的唯一值的数量
|
|
cols_to_drop = nunique[nunique == 1].index # 找到只有一个唯一值的列的索引
|
|
df.drop(cols_to_drop, axis=1, inplace=True) # 删除这些列
|
|
print(cols_to_drop) # 输出删除的列的列名
|
|
return df
|
|
|
|
|
|
def select_label_rows(df: pd.DataFrame, label: str):
|
|
return df[df.iloc[:, -1] == label]
|
|
|
|
|
|
def drop_columns_with_fix_up(df: pd.DataFrame, columns: list):
|
|
columns = [w.lstrip() for w in columns]
|
|
df = drop_columns(df, columns)
|
|
columns = [" " + w for w in columns]
|
|
df = drop_columns(df, columns)
|
|
return df
|
|
|
|
|
|
def drop_columns(df: pd.DataFrame, columns: list):
|
|
columns = [w.lstrip() for w in columns]
|
|
for column_name in columns:
|
|
cols_to_drop = df.filter(regex=column_name).columns
|
|
df.drop(cols_to_drop, axis=1, inplace=True)
|
|
return df
|
|
|
|
|
|
def get_ddos_df(df: pd.DataFrame):
|
|
return df[df.iloc[:, -1] == 'DDoS']
|
|
|
|
|
|
def is_in_bypass_list(column_name: str, bypass_list: tuple) -> bool:
|
|
for bypass in bypass_list:
|
|
if bypass in column_name:
|
|
return True
|
|
return False
|