【发布时间】:2019-07-07 15:07:18
【问题描述】:
我有一堆数据,我正在从这样的 CSV 文件读取到 Pandas 中,其中包含
df = pd.read_csv('C:\\User\\desktop\\master.csv', parse_dates=[['Date', 'Time']])
Date Time kW
3/1/2011 12:15:00 AM 171.36
3/1/2011 12:30:00 AM 181.44
3/1/2011 12:45:00 AM 175.68
3/1/2011 1:00:00 AM 180.00
3/1/2011 1:15:00 AM 175.68
进行df.head() 打印:
Date_Time kW
0 2011-03-01 00:15:00 171.36
1 2011-03-01 00:30:00 181.44
2 2011-03-01 00:45:00 175.68
3 2011-03-01 01:00:00 180.00
我的机器学习实验我正在尝试根据时间戳在星期几、小时、分钟添加一些额外的列。
df['month'] = df.Date_Time.dt.month
df['Day_of_week'] = df.Date_Time.dt.dayofweek
df['hour'] = df.Date_Time.dt.hour
df['minute'] = df.Date_Time.dt.minute
在不知道自己在做什么的情况下,我的 sci kit learn 代码在下面,我试图以相同的类型错误跟随 this SO post。
columns = df.columns.tolist()
columns = [c for c in columns if c not in ['kW', 'date']]
from sklearn import tree
clf = tree.DecisionTreeClassifier(max_depth=2, min_samples_leaf = (len(df)/100) )
clf = clf.fit(df[columns],df['kW'])
生成与上述 SO 帖子相同的错误,但解决方案无法解决我的问题:
float() argument must be a string or a number, not 'Timestamp'
编辑
如果我打印 df.dtypes:
Date_Time datetime64[ns]
kW float64
month int64
Day_of_week int64
hour int64
minute int64
dtype: object
如果我打印df.columns:
Index(['Date_Time', 'kW', 'month', 'Day_of_week', 'hour', 'minute'], dtype='object')
【问题讨论】:
-
[c for c in columns if c not in ['kW', 'date']]应该是[c for c in columns if c not in ['kW', 'Date']]和'date'大写'Date'。否则,您实际上并没有从列表中删除它columns -
我做错什么了吗?使用
columns = [c for c in columns if c not in ['kW', 'Date']]和clf = clf.fit(df[columns],df['kW'])我仍然遇到同样的错误.. -
看起来你有 3 列要开始
['Date', 'Time', 'kW']但你指的是一列'Date_Time'我不清楚你的数据框中实际上是什么。无论哪种方式,您都有一个未被过滤掉的Timestamp列。您正在尝试使用变量名称columns过滤您的数据框,但对它包含的内容或df包含的内容并不十分小心。解决此问题的一种方法是使用df.select_dtypes(include=np.number)获取所有数字列。所以你可以做clf.fit(df.select_dtypes(include=np.number), df['kW']) -
您可以打印 df.columns 并更新帖子吗?不确定您是否有日期、时间或 Date_Time 列
-
嗨@Vaishali,打印
df.columns给我Index(['Date_Time', 'kW', 'month', 'Day_of_week', 'hour', 'minute'], dtype='object')... 我的整个问题是我没有将Date_Time 设置为pd 索引吗?
标签: python pandas machine-learning scikit-learn data-science