所以我有一个包含4个ID的数据集,每个id有70个值,存在和不存在的值。我使用以下代码计算了当前和不存在的值的数量
df=pd.pivot_table(df,index=["ID",'status'], values=["Sem1"], aggfunc=[len]).reset_index()
df['ID'] = df['ID'].mask(df['ID'].duplicated(), '')
df
ID Status len
Sem1
4234 Present 45
Absent 25
4235 Present 40
Absent 30
4236 Present 35
Absent 35
4237 Present 50
Absent 20
In: df.columns
Out:ultiIndex(levels=[['len', 'status', 'ID'], ['sem1', '']],
labels=[[2, 1, 0], [1, 1, 0]])
我需要将列分别添加到两个不同的数据框中 有没有办法分别取列? 另外,需要知道它是否可以更改为以下数据集?
ID Status Sem1
4234 Present 45
Absent 25
4235 Present 40
Absent 30
4236 Present 35
Absent 35
4237 Present 50
Absent 20
In:df.columns
Out:Index(['ID', 'Status','Sem1'], dtype='object')
可以从previos数据集中完成吗
答案 0 :(得分:4)
对我来说,你的解决方案很好用。
df = pd.DataFrame({'Sem1':[1,3,5,7,1,0],
'Sem2':[5,3,6,9,2,4],
'ID':list('aaabbb')})
print (df)
Sem1 Sem2 ID
0 1 5 a
1 3 3 a
2 5 6 a
3 7 9 b
4 1 2 b
5 0 4 b
df1 = df.groupby('ID').mean().reset_index()
print (df1)
ID Sem1 Sem2
0 a 3.000000 4.666667
1 b 2.666667 5.000000
编辑:
删除[]
:
df = pd.pivot_table(df,index=["ID",'status'], values="Sem1", aggfunc='size').reset_index()