我最初的数据帧(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)解决此错误。 –