我最初的數據幀(DF)的返回日期時間列:熊貓據幀 - 在np.where聲明
column1 column2 column3 column4
0 criteria_1 criteria_a 1/5/2017 5
1 criteria_1 criteria_b 2/3/2017 3
2 criteria_1 criteria_a 1/10/2017 10
3 criteria_1 criteria_b 2/7/2017 7
4 criteria_1 criteria_b 2/11/2017 11
5 criteria_1 criteria_a 1/13/2017 13
我的代碼:
df = pd.read_csv("C:/Users/Desktop/maxtest.csv")
df['column3'] = pd.to_datetime(df['column3'])
df['max_column3'] = df.groupby(['column1','column2'])['column3'].transform(max)
df['max_column4'] = df.groupby(['column1','column2'])['column4'].transform(max)
df['test'] = np.where(df['column3'] < df['max_column3'],df['column3'],df['max_column4'])
問題:
我創建了一個DF ['test']列,並希望在np.where語句爲True時返回df ['column3']。當我嘗試這個時,我收到「TypeError:invalid type promotion」錯誤。
我不完全確定是什麼導致了錯誤。
我認爲問題在於你把np.where的結果混合在一起。有時它會在其他時間返回一個日期時間,它返回一個str或int。熊貓數據框和numpy NDarrays每列需要一個dtype。我能夠通過df.column3上的.astype(str)解決此錯誤。 –