如何在Python pandas中重塑此数据集?
作者:互联网
假设我有这样的数据集:
is_a is_b is_c population infected
1 0 1 50 20
1 1 0 100 10
0 1 1 20 10
...
我如何重塑它看起来像这样?
feature 0 1
a 10/20 30/150
b 20/50 20/120
c 10/100 30/70
...
在原始数据集中,我将a,b和c作为各自独立的列.在转换后的数据集中,列功能下列出了这些相同的变量,并生成了两个新列0和1,对应于这些功能可以采用的值.
在is_a为0的原始数据集中,添加受感染的值并将其除以总体值.其中is_a为1,执行相同操作,添加受感染的值并按人口值除以它们.冲洗并重复is_b和is_c.新数据集将具有如下所示的这些分数(或小数).谢谢!
我已经尝试过pd.pivot_table和pd.melt,但没有什么能接近我需要的东西.
解决方法:
在做了wide_to_long之后,你的问题就更清楚了
df=pd.wide_to_long(df,['is'],['population','infected'],j='feature',sep='_',suffix='\w+').reset_index()
df
population infected feature is
0 50 20 a 1
1 50 20 b 0
2 50 20 c 1
3 100 10 a 1
4 100 10 b 1
5 100 10 c 0
6 20 10 a 0
7 20 10 b 1
8 20 10 c 1
df.groupby(['feature','is']).apply(lambda x : sum(x['infected'])/sum(x['population'])).unstack()
is 0 1
feature
a 0.5 0.200000
b 0.4 0.166667
c 0.1 0.428571
标签:python,pandas,pivot,reshape,munge 来源: https://codeday.me/bug/20190722/1499927.html