【问题标题】:Understanding Python Pandas dataframes了解 Python Pandas 数据框
【发布时间】:2018-08-26 09:28:56
【问题描述】:

我正在学习 Pandas,但在理解数据透视表时遇到了困难。下面是我正在运行的示例程序。

import pandas as pd

df = pd.read_csv('/Users/xxx/Desktop/df.csv')

print(df)

df = df.pivot_table(index='__timestamp', columns=[], values=['passed_count', 'failed_count'])

print(df)

程序在输出下方打印-

   __timestamp failed_count  passed_count Unnamed: 3
0     27/05/18    0.019417       0.980583           
1     03/06/18    0.427136       0.839196           
2     10/06/18    0.839416       0.854015           
3     17/06/18    0.403846       0.913462           
4     24/06/18    1.429688       0.757812           
5     01/07/18    6.781457       0.701987           
6     08/07/18    0.324561       0.929825           
7     15/07/18    0.295082       0.970492           
8     22/07/18    0.849802       0.960474           
9     29/07/18    0.673333       0.923333           
10    05/08/18    0.276657       0.919308           
11    12/08/18    0.242105       0.821053           
12    19/08/18    0.176471       0.976471
       
             passed_count
__timestamp              
01/07/18         0.701987
03/06/18         0.839196
05/08/18         0.919308
08/07/18         0.929825
10/06/18         0.854015
12/08/18         0.821053
15/07/18         0.970492
17/06/18         0.913462
19/08/18         0.976471
22/07/18         0.960474
24/06/18         0.757812
27/05/18         0.980583
29/07/18         0.923333

在执行 pivot_table() 之后,我无法理解第三列的缺失。可以像我上面那样给出多个值吗?提供的价值选项有什么意义?

编辑:

如cmets中所问-

CSV 文件内容为-

__timestamp,failed_count,passed_count,
27/05/18,0.019417 ,0.980583, 
03/06/18,0.427136 ,0.839196, 
10/06/18,0.839416 ,0.854015, 
17/06/18,0.403846 ,0.913462, 
24/06/18,1.429688 ,0.757812, 
01/07/18,6.781457 ,0.701987, 
08/07/18,0.324561 ,0.929825, 
15/07/18,0.295082 ,0.970492, 
22/07/18,0.849802 ,0.960474, 
29/07/18,0.673333 ,0.923333, 
05/08/18,0.276657 ,0.919308, 
12/08/18,0.242105 ,0.821053, 
19/08/18,0.176471 ,0.976471,

df.head()的输出,读取CSV后立即是

      __timestamp failed_count  passed_count Unnamed: 3
0    27/05/18    0.019417       0.980583           
1    03/06/18    0.427136       0.839196           
2    10/06/18    0.839416       0.854015           
3    17/06/18    0.403846       0.913462           
4    24/06/18    1.429688       0.757812 

【问题讨论】:

  • pivot_table 应该可以按预期工作。你能提供一个你的 csv 文件的样本吗?
  • 信息不足。读取 CSV 数据后,请使用 df.head() 打印头部。不知道你读到了什么数据。我们无法评论您生成的数据透视表。
  • @SeanPeters 编辑了问题。
  • @rocksportrocker 已修复。
  • 我怀疑由于某种原因您的第二列被解释为字符串。也许它与每次浮动后的尾随空格有关。相同的代码和 csv 对我来说工作正常,但是 pandas 似乎会默默地忽略值列表中定义的任何字符串列。因此我的怀疑......

标签: python pandas dataframe pivot-table


【解决方案1】:

正如我们在 cmets 中发现的,pandas 的 pivot_table 函数会默默地忽略值列表中的任何非数字(在本例中为 str)列。 failed_count 列也被这样解释。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-20
    • 2021-10-02
    • 1970-01-01
    • 2023-02-07
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多