我是熊貓的新手。
在這里,我遍歷每一行并檢查用戶的退出日期,如果他的退出日期 >= 10,則應將其個人詳細資訊替換為他的 ID。
我被卡住了請幫忙。
for edate in pd.to_datetime(df1['EXIT_DATE']):
rdelt = relativedelta(datetime.today(),edate)
df1['years'] = rdelt.years
# its modifying each row in a DataFrame.
#df1.loc[flag,['first_name','middel_name','email']] = df1['user_id']
uj5u.com熱心網友回復:
編輯:
添加了@Arvind Kumar Avinash 解釋“資料幀過濾”的答案的鏈接
接受@Emi OB 評論并添加解釋;
您可以使用通常的“<,>,<=,>=”運算子創建標志/掩碼,例如
age = pd.Series([20,23,22,19,30])
age>22 # Series([False,True,False,False,True])
因此,您可以使用該掩碼對所有True索引進行操作,即如果我們想用value替換所有agewhere age>22(即我們擁有True值的所有索引)22,我們只需通過
age = pd.Series([20,23,22,19,30])
mask = age>22 # Series([False,True,False,False,True])
age.loc[mask] = 22
age # pd.Series([20,22,22,19,22])
可以在資料幀上使用完全相同的邏輯
uj5u.com熱心網友回復:
您可以嘗試以下代碼來避免回圈:
# Ensure EXIT_DATE dtype is a datetime64
df1['EXIT_DATE'] = pd.to_datetime(df['EXIT_DATE'])
df1['years'] = pd.Timestamp.today().year - df1['EXIT_DATE'].dt.year
df1.loc[df1['years'] >= 10, ['first_name','middle_name','email']] = df['user_id']
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/343392.html
