python - 为索引旋转具有多列的DataFrame

标签 python pandas dataframe pivot-table

我有一个数据框,我只想将几行转置为列。

这就是我现在拥有的。

   Entity   Name        Date  Value
0     111  Name1  2018-03-31    100
1     111  Name2  2018-02-28    200
2     222  Name3  2018-02-28   1000
3     333  Name1  2018-01-31   2000

我想创建日期作为列,然后添加值。像这样:

   Entity   Name  2018-01-31  2018-02-28  2018-03-31
0     111  Name1         NaN         NaN       100.0
1     111  Name2         NaN       200.0         NaN
2     222  Name3         NaN      1000.0         NaN
3     333  Name1      2000.0         NaN         NaN

我可以为两个不同的 Entity 使用相同的 Name。这是一个更新的数据集。

代码:

import pandas as pd
import datetime

data1 = {
         'Entity': [111,111,222,333],
         'Name': ['Name1','Name2', 'Name3','Name1'],
         'Date': [datetime.date(2018,3, 31), datetime.date(2018,2,28), datetime.date(2018,2,28), datetime.date(2018,1,31)],
         'Value': [100,200,1000,2000]
    }
df1 = pd.DataFrame(data1, columns= ['Entity','Name','Date', 'Value'])

我如何实现这一目标?任何指针?谢谢大家。

最佳答案

根据您的更新,您需要具有两个索引列的 pivot_table -

v = df1.pivot_table(
        index=['Entity', 'Name'], 
         columns='Date', 
         values='Value'
).reset_index()
v.index.name = v.columns.name = None

v
   Entity   Name  2018-01-31  2018-02-28  2018-03-31
0     111  Name1         NaN         NaN       100.0
1     111  Name2         NaN       200.0         NaN
2     222  Name3         NaN      1000.0         NaN
3     333  Name1      2000.0         NaN         NaN

关于python - 为索引旋转具有多列的DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49943627/

相关文章:

python - 如何根据条件编辑包含序列的数据框列?

python - 判断行的两列是否相等。并创建 bool 列

dataframe - 如何在 Julia 中制作数据框列表?

python - 拆分数字和单词 pandas 保留索引

python - 类中参数的条件或限制?

python - Tensorflow 2.1/Keras - 尝试卡住图形时出现 "output_node is not in graph"错误

Python Pandas - 类似于 ISIN 但 "contains"与 "exact"匹配

基于元组第一个值的python求和元组列表

python - Pandas 重新采样以在申请后仅返回一列

python - Pandas 按索引值划分数据框