如何解决如何转换数据框
我从数据框中获得以下片段:
cough fever
8 0.0 0.0
9 -1.0 1.0
24 0.0 1.0
29 0.0 -1.0
30 1.0 1.0
我需要按每个值对每列求和的地方,例如:
df['cough'].value_counts()
Out[189]:
0.0 3
1.0 1
-1.0 1
Name: cough,dtype: int64
df['fever'].value_counts()
Out[189]:
0.0 1
1.0 3
-1.0 1
Name: fever,dtype: int64
但是,我需要在数据框中使用它,我可以按照以下方法进行操作:
out=pd.DataFrame()
symptoms=['cough','fever']
for s in symptoms:
frames=[out,df[c].value_counts().to_frame()]
out=pd.concat(frames)
但是,输出有空单元格:
cough fever
0.0 3 NaN
-1.0 1 NaN
1.0 1 NaN
0.0 NaN 1
1.0 NaN 1
-1.0 NaN 3
如何获得下面表格中的 df(即消除空单元格并转置,一举完成)?
-1 0 1
cough 1 3 1
fever 1 1 3
解决方法
也许一次性完成。看下面的代码
df.astype(str).apply(lambda x: x.value_counts()).T#if cough and fever are not dtype object
#df.apply(lambda x: x.value_counts()).T#if cough and fever are dtype object
-1.0 0.0 1.0
cough 1 3 1
fever 1 1 3
,
更改 concat
out=pd.concat(frames,axis=1)
或者干脆做
s = df.melt()
out = pd.crosstab(s.variable,s.value)
value -1.0 0.0 1.0
variable
cough 1 3 1
fever 1 1 3
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。