我有一个大致相同的Pandas数据框(<body onresize="resizeAgain('.content')">
function resizeAgain(e) {
$(e).css('height','');
$(e).height(maxHeight);
}
function sameSize(e, selector1, selector2) {
var slave = $(selector1).height();
var master = $(selector2).height();
var maxHeight = Math.max(slave, master);
$(e).height(maxHeight);
}
sameSize('.content', '.col1', '.col2');
是日期时间对象):
dt*
我想把它转换成这样的形状:
A B C D
1 dt1 X 1 1
2 None Y 4 1
3 dt2 X 2 2
4 None Y 8 2
5 None X 3 3
6 None Y 2 3
7 dt3 X 7 4
8 dt3 Y 1 4
给定日期时间对象是相同的,或者一个是 A X y D
1 dt1 1 4 1
2 dt2 2 8 2
3 None 3 2 3
4 dt3 7 1 4
。
我尝试过使用以下内容:
None
但这只会使&#34; A&#34;专栏消失。
上述其他变化也失败了:
pd.pivot_table(table, index=["D"], columns=["B"], values=["C","A"], aggfunc=lambda x: ''.join(set(x)))
例如,这个创建了一个分层列数据框,我无法将其折叠到所需的结构中。
你可以帮帮我吗?答案 0 :(得分:1)
您可以使用:
#sort values by column A
df = df.sort_values('A', ascending=False)
#replace string 'None' to None if necessary
df.A = df.A.replace({'None': None})
#groupby by column D and forward fill first value in each group
df.A = df.groupby('D', sort=False)['A'].ffill()
#reshape by set_index with unstack
df = df.set_index(['A','D', 'B'])['C'].unstack().reset_index()
#reorder columns, remove column name
df = df[['A','X','Y','D']].rename_axis(None, axis=1)
#if necessary replace NaN to None
df.A = df.A.replace({np.nan: None})
#sort by column D
df = df.sort_values('D')
print (df)
A X Y D
1 dt1 1 4 1
2 dt2 2 8 2
0 None 3 2 3
3 dt3 7 1 4
答案 1 :(得分:1)