Hen*_*k K 6 python numpy pandas
希望在更改数据框的形状时保留 NaN 值。
这两个问题可能是相关的:
但无法使用提供的答案 - 我可以以某种方式设置 np.sum 的最小计数吗?
import pandas as pd
import numpy as np
df = pd.DataFrame([['Y1', np.nan], ['Y2', np.nan], ['Y1', 6], ['Y2',8]], columns=['A', 'B'], index=['1988-01-01','1988-01-01', '1988-01-04', '1988-01-04'])
df.index.name = 'Date'
df
pivot_df = pd.pivot_table(df, values='B', index=['Date'], columns=['A'],aggfunc=np.sum)
pivot_df
Run Code Online (Sandbox Code Playgroud)
输出是:
A Y1 Y2
Date
1988-01-01 0.0 0.0
1988-01-04 6.0 8.0
Run Code Online (Sandbox Code Playgroud)
所需的输出是:
A Y1 Y2
Date
1988-01-01 NaN NaN
1988-01-04 6.0 8.0
Run Code Online (Sandbox Code Playgroud)
如果没有重复的条目,请使用set_index+unstack
df.set_index('A', append=True)['B'].unstack(-1)
Run Code Online (Sandbox Code Playgroud)
A Y1 Y2
Date
1988-01-01 NaN NaN
1988-01-04 6.0 8.0
Run Code Online (Sandbox Code Playgroud)
如果有重复项,请使用groupbywithmin_count
>> df
A B
Date
1988-01-01 Y1 NaN
1988-01-01 Y2 NaN
1988-01-04 Y1 6.0
1988-01-04 Y2 8.0
1988-01-01 Y1 NaN
1988-01-01 Y2 NaN
1988-01-04 Y1 6.0
1988-01-04 Y2 8.0
Run Code Online (Sandbox Code Playgroud)
df.set_index('A', append=True).groupby(level=[0, 1])['B'].sum(min_count=1).unstack(-1)
Run Code Online (Sandbox Code Playgroud)
A Y1 Y2
Date
1988-01-01 NaN NaN
1988-01-04 12.0 16.0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10601 次 |
| 最近记录: |