python - 创建带有类别的时间序列的巧妙方法

标签 python pandas dataframe time-series

给定一个元组列表,每个元组都是(日期时间、lang、类型),其中 lang 取三个可能的值(比如“en”、“es”和“ja”),而 type 取两个值: ' U'或'R'。

我想创建一个包含以下列的时间序列数据框: 日期、语言、“U”和“R”。 也就是说,lang、U 和 R 按每种语言每天计数。

示例,给定一个记录列表(元组):

df = pd.DataFrame.from_records(records, columns=['time','lang','type'])
df.head()

结果:

     time                  lang  type
0    2016-05-19 20:20:26    en    R
1    2016-05-19 20:20:43    ja    R
2    2016-05-19 20:26:01    ja    U
3    2016-05-19 20:30:31    en    R
4    2016-05-19 20:33:57    es    R
...

我想操纵这个数据框(或原始记录列表)得到这样的东西:

time        lang  U    R
2016-05-19  en     4    2
            ja     1    1
            es     0    1
2016-05-20  en    10    7
            ja     1    9
            es     3   13

我正在尝试这样做

df2 = df.groupby([df['time'].dt.to_period('D'), 'lang', 'type']).count().unstack()
df2.columns = df2.columns.droplevel(0)

但是我在该列上获得了索引,但无法删除它(忽略数字)。

            type    U     R
time        lang
2016-05-19    en     4    2
              ja     1    1
              es     0    1
2016-05-20    en    10    7
              ja     1    9
              es     3   13

df2.columns

返回:Index([u'R', u'U'], dtype='object', name=u'type')

知道如何在没有多余绒毛的情况下创建所需的效果吗?

最佳答案

"type" 保留为列的名称。您可以通过以下方式删除它:

df2.columns.name = None

但是,我认为您不能将其他 4 个标签放在同一行上,因为前两个标签是行上的多重索引,另外 2 个标签是列上的简单索引。

关于python - 创建带有类别的时间序列的巧妙方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40939708/

相关文章:

python - 为分类数据填充多个空值

python - 从数据框中删除顶部标题

python - 在没有 pdfkit 的情况下将 Pandas DataFrame 保存为 PDF 文件格式

python - 比较python中两个数组的值

python - 使用 Python 3.4 从 Google Patents 下载文件

python - 使用 Python (Windows) 枚举 CD 驱动器

python - 如何比较两个 pandas 数据帧并删除一个文件上的重复项而不附加其他文件中的数据

python-3.x - Python - 快速 HDF5 时间序列数据查询

对数据框中的单个列在另一列的每个级别内重新排序

python - 将对象转换为日期时间