簡體   English   中英

如何跨多列循環類似的python pandas代碼

[英]How to loop similar python pandas code across multiple columns

我寫了一段代碼,從其中一個時間戳列中提取Month,hour,weekday。 我想在我的數據上的其他時間戳列上應用相同的代碼,而無需重新編寫代碼。

df['closed_at'] = pd.to_datetime(df['closed_at'], errors='coerce')
df['closed_at - Month-Year'] = df['closed_at'].dt.to_period('M')
df['closed_at - Weekday Num'] = df['closed_at'].dt.dayofweek + 1
df['closed_at - Weekday'] = df['closed_at'].dt.weekday_name
df['closed_at - Weekday Combo'] = df['closed_at - Weekday Num'].astype(str)+'-'+df['closed_at - Weekday']
df['closed_at - Hour Num'] = df['closed_at'].dt.hour

首先指定由日期時間填充的列,然后使用f-string s在循環中創建新列:

cols = ['closed_at', 'another date col']

for x in cols:
    incident_data[x] = pd.to_datetime(incident_data[x], errors='coerce')
    incident_data[f'{x} - Month-Year'] = incident_data[x].dt.to_period('M')
    incident_data[f'{x} - Weekday Num'] = incident_data[x].dt.dayofweek + 1
    incident_data[f'{x} - Weekday'] = incident_data[x].dt.weekday_name
    incident_data[f'{x} - Weekday Combo'] = (incident_data[f'{x} - Weekday Num'].astype(str)+
                                             '-'+incident_data[f'{x} - Weekday'])
    incident_data[f'{x} - Hour Num'] = incident_data[x].dt.hour

您可以像這樣在參數中聲明具有列名和df的函數:

def transformation(df,column_name):
    df[column_name] = pd.to_datetime(df[column_name], errors='coerce')
    df['closed_at - Month-Year'] = df[column_name].dt.to_period('M')
    df['closed_at - Weekday Num'] = df[column_name].dt.dayofweek + 1
    df['closed_at - Weekday'] = df[column_name].dt.weekday_name
    df['closed_at - Weekday Combo'] = df['closed_at - Weekday Num'].astype(str)+'-'+df['closed_at - Weekday']
    df['closed_at - Hour Num'] = df[column_name].dt.hour
    return df

然后,您可以使用名稱列表在不同的列上進行迭代。

df = transformation(df,'closed_at')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM