Pro*_*Sky 4 python pivot-table dataframe pandas
我有一个数据框,我只想将几行转置为列。
这就是我现在所拥有的。
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
Run Code Online (Sandbox Code Playgroud)
我想创建日期作为列,然后添加值。像这样的东西:
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
Run Code Online (Sandbox Code Playgroud)
Name
对于两个不同的Entity
s,我可以有相同的。这是一个更新的数据集。
代码:
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'])
Run Code Online (Sandbox Code Playgroud)
我如何实现这一目标?任何指针?谢谢大家。
根据您的更新,您需要pivot_table
两个索引列 -
v = df1.pivot_table(
index=['Entity', 'Name'],
columns='Date',
values='Value'
).reset_index()
v.index.name = v.columns.name = None
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13316 次 |
最近记录: |