3 回答

TA貢獻1825條經驗 獲得超6個贊
而不是使用apply它更好地將日期視為適當的日期時間并使用dt方法的功能
例如
spy_data = pd.read_csv(StringIO(your_data),sep=',')
spy_data['Date'] = pd.to_datetime(spy_data['Date'])
day_of_week = spy_data['Date'].dt.strftime("%m/%d/%Y")
print(day_of_week)
0 01/29/1993
1 02/01/1993
2 02/02/1993
3 02/03/1993
4 02/04/1993
Name: Date, dtype: object
如果您的日期設置為您的索引:
spy_data.index.strftime("%m/%d/%Y")
out:
Index(['01/29/1993', '02/01/1993', '02/02/1993', '02/03/1993', '02/04/1993'], dtype='object')

TA貢獻1876條經驗 獲得超5個贊
您還需要指定axis=1何時使用apply()函數,以表明它應該應用于行級。
軸:{0 或“索引”,1 或“列”},默認 0
沿其應用函數的軸:
0 或“索引”:將函數應用于每一列。
1 或“列”:將函數應用于每一行。
以下應該可以解決問題:
spy_data = pd.read_csv('data/SPY_daily.csv')
spy_data['day_of_week'] = spy_data.apply(
lambda row: datetime.strptime(row['Date'], "%m/%d/%Y"), axis=1)
print(spy_data)

TA貢獻1847條經驗 獲得超11個贊
問題是pandas.read_csv
將第一列作為數據框的索引,因此它不在列中。為了避免這種情況,你應該明確說熊貓不要這樣做:
spy_data = pd.read_csv('data/SPY_daily.csv', index_col=False)
添加回答
舉報