Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在pandas上选择一列(来自datetime.date from timestamp的结果)_Python_Pandas_Datetime_Timestamp - Fatal编程技术网

Python 在pandas上选择一列(来自datetime.date from timestamp的结果)

Python 在pandas上选择一列(来自datetime.date from timestamp的结果),python,pandas,datetime,timestamp,Python,Pandas,Datetime,Timestamp,我正在尝试选择一个关于熊猫的专栏。该列是时间戳数据中dt.date(fromdatetime)的结果。为了更好地理解这个问题,下面是完整的故事 这是数据 created_at final_score date 2018-09-07 03:22:10.753 63 2018-09-07 2018-09-06 11:31:10.312 17 2018-09-06 2018-09-06 02:53:40.136 79

我正在尝试选择一个关于熊猫的专栏。该列是时间戳数据中dt.date(from
datetime
)的结果。为了更好地理解这个问题,下面是完整的故事

这是数据

created_at               final_score  date
2018-09-07 03:22:10.753  63           2018-09-07
2018-09-06 11:31:10.312  17           2018-09-06
2018-09-06 02:53:40.136  79           2018-09-06
2018-09-07 00:49:07.007  61           2018-09-07
2018-09-06 12:42:41.523  64           2018-09-06
2018-09-06 08:23:32.121  56           2018-09-06
2018-09-05 13:15:16.082  58           2018-09-05
2018-09-06 06:57:19.128  39           2018-09-06
2018-09-06 09:00:56.311  60           2018-09-06
2018-09-05 23:59:22.213  42           2018-09-05
这是我的密码

df['date'] = df['timestamp'].dt.date
pivot_df = df.groupby(['date','score']).size().unstack(fill_value = 0).reset_index(),T
pivot_df = pivot_df.sort_values('date', ascending=False).T
pivot_df.columns = pivot_df.iloc[0]
pivot_df = pivot_df.iloc[1:]
这是结果

date         2018-09-07 2018-09-06  2018-09-05
final_score         
17           0          1           0
39           0          1           0
42           0          0           1
56           0          1           0
58           0          0           1
60           0          1           0
61           1          0           0
63           1          0           0
64           0          1           0
79           0          1           0
但是,我不能过滤

我正在尝试两种方法来选择一列

这是第一次尝试

输入

输出

  File "<ipython-input-61-4ac7906c5f54>", line 1
    pivot_df[2018-09-07]
                     ^
SyntaxError: invalid token
KeyError: '2018-09-07'
输出

  File "<ipython-input-61-4ac7906c5f54>", line 1
    pivot_df[2018-09-07]
                     ^
SyntaxError: invalid token
KeyError: '2018-09-07'

我不知道这个过程中出了什么问题,所以我无法查询它们,因为您的列是
datetime
对象,而不是字符串。奇怪的是,为什么这些列不是
DatetimeIndex
对象(否则,您所做的工作就会起作用)

您可以执行以下任一操作:

pivot_df.columns = pivot_df.columns.astype(str)
或者

现在

pivot_df['2018-09-07']

final_score
17    0
39    0
42    0
56    0
58    0
60    0
61    1
63    1
64    0
79    0
Name: 2018-09-07, dtype: object
注意:即使使用另一个答案,您也需要做同样的事情。

您需要:

df.pivot_table(index='final_score',columns='date',aggfunc='count').fillna(0)
df.columns = df1.columns.levels[1].astype(str)

  date  2018-09-05  2018-09-06  2018-09-07
final_score         
17  0.0 1.0 0.0
39  0.0 1.0 0.0
42  1.0 0.0 0.0
56  0.0 1.0 0.0
58  1.0 0.0 0.0
60  0.0 1.0 0.0
61  0.0 0.0 1.0
63  0.0 0.0 1.0
64  0.0 1.0 0.0
79  0.0 1.0 0.0

df['2018-09-05']

final_score
17    0.0
39    0.0
42    1.0
56    0.0
58    1.0
60    0.0
61    0.0
63    0.0
64    0.0
79    0.0
Name: 2018-09-05, dtype: float64

虽然这可能是一个不同的解决方案,但它并没有回答OP关于他们为什么会出现这种行为的问题,而且无论如何,您的代码也会产生同样的问题。
df_pivot.columns
给出了这个
多索引(levels=[['created_at'],[2018-09-052018-09-062018-09-07]],labels=[[0,0,0,1,2]],名称=[无,'日期')
我不能参加
df_pivot.columns=['final_score','2018-09-05','2018-09-06','2018-09-07']
@NabihBawazir Check现在我用多索引和列问题更新了该问题。@coldspeed是的,我同意,问题是列是
datetime index
。因此将我的多索引输出更改为OP所需的解决方案。感谢您的评论。如果不是,等待@sandp编辑答案将是最好的答案
df.pivot_table(index='final_score',columns='date',aggfunc='count').fillna(0)
df.columns = df1.columns.levels[1].astype(str)

  date  2018-09-05  2018-09-06  2018-09-07
final_score         
17  0.0 1.0 0.0
39  0.0 1.0 0.0
42  1.0 0.0 0.0
56  0.0 1.0 0.0
58  1.0 0.0 0.0
60  0.0 1.0 0.0
61  0.0 0.0 1.0
63  0.0 0.0 1.0
64  0.0 1.0 0.0
79  0.0 1.0 0.0

df['2018-09-05']

final_score
17    0.0
39    0.0
42    1.0
56    0.0
58    1.0
60    0.0
61    0.0
63    0.0
64    0.0
79    0.0
Name: 2018-09-05, dtype: float64