问题描述
当我尝试运行此代码时:
SELECT
calendar.date,type.label,COUNT(fact.id)
FROM
calendar
CROSS JOIN
type
LEFT JOIN
submissions AS fact
ON fact.created >= calendar.date
AND fact.created < calendar.date + 1
AND fact.type = type.label
AND fact.offer = 'template1'
WHERE
calendar.date BETWEEN ? AND ?
AND type.label IN ('Mail','Online')
GROUP BY
calendar.date,type.label
我正在为 X_test = df.values
df_new = ks.DataFrame(X_test,columns = ['Sales','T_Year','T_Month','T_Week','T_Day','T_Hour'])
数据框获取新索引,该索引与 df_new
不同。
我尝试更改下面的代码以保留字典的索引。但是它给出了一个错误:
df
有没有办法维护 X_test = df.values(index=df.index)
的索引,这些索引与 df_new
数据帧相同?
解决方法
DataFrames 有一个 set_index()
方法来手动设置“索引列”。考拉特别接受作为主要论点:
键:标签或类似数组或标签/数组列表
此参数可以是单个列键、与调用 DataFrame 长度相同的单个数组,也可以是包含列键和数组的任意组合的列表。这里,“数组”包括系列、索引和 np.ndarray。
这样,您就可以传递原始 df 的 Index
对象:
X_test = df.values
df_new = ks.DataFrame(X_test,columns = ['Sales','T_Year','T_Month','T_Week','T_Day','T_Hour'])
df_new = df_new.set_index(df.index)
现在关于您收到错误的行:
X_test = df.values(index=df.index)
出现错误的原因是您将 numpy
数组与 pandas
DataFrames 混淆。
当您调用 DataFrame df.values
的 df
时,这将返回一个 np.ndarray
对象,其中包含所有数据帧值不带索引。
这不是函数,因此您不能通过编写 (index=df.index)
来“调用”它。
Numpy 数组没有自定义索引,它们只是数组。您的 df_new
只关心这一点,您可以按照我上面的说明进行设置。
免责声明:我无法为此答案安装 koalas
,因此仅在 Pandas Dataframes 中进行了测试。如果考拉确实完全支持熊猫的界面,那应该可以。