Python 按二进制列值重塑数据帧
无法理解如何通过几个二进制列值将我的数据帧重塑为新的数据帧 输入:Python 按二进制列值重塑数据帧,python,pandas,dataframe,numpy,reshape,Python,Pandas,Dataframe,Numpy,Reshape,无法理解如何通过几个二进制列值将我的数据帧重塑为新的数据帧 输入: data code a b c 2016-01-07 foo 0 0 0 2016-01-12 bar 0 0 1 2016-01-03 gar 0 1 0 2016-01-22 foo 1 1 0 2016-01-26 bar 1 1 0 我想通过二进制值来重塑,即a/b/c列的形状,如果它们的值==1,我
data code a b c
2016-01-07 foo 0 0 0
2016-01-12 bar 0 0 1
2016-01-03 gar 0 1 0
2016-01-22 foo 1 1 0
2016-01-26 bar 1 1 0
我想通过二进制值来重塑,即a/b/c列的形状,如果它们的值==1,我需要每次新列
所有的数据
预期产出:
data code
a 2016-01-22 foo
a 2016-01-26 bar
b 2016-01-03 gar
b 2016-01-22 foo
b 2016-01-26 bar
c 2016-01-12 bar
从早上就在这里受挫了,非常感谢你的帮助 与过滤一起使用1
in,用于过滤后删除列:
df = df.melt(['data','code'], var_name='type')
df = df[df.pop('value').eq(1)]
print (df)
data code type
3 2016-01-22 foo a
4 2016-01-26 bar a
7 2016-01-03 gar b
8 2016-01-22 foo b
9 2016-01-26 bar b
11 2016-01-12 bar c
节省我的时间!如何添加每种类型的编号的附加列?(对于所有a-2,b-3,c-1)?@unkind58-当然,你可以检查@unkind58-它的意思是
df['size']=df.groupby(['type'])]['type'].transform('size')
df['number']=df['type'].map(dict(a=1,b=2,c=3))
@adirabargil-它为新列重复计数