我有一个看起来像这样的熊猫数据框:
df
Date A B C
0 2020-08-17 1 1 0
1 2020-08-17 1 0 0
2 2020-08-17 0 0 1
3 2020-08-18 0 1 0
4 2020-08-18 1 1 0
5 2020-08-19 0 0 1
...
A,B,C列的值为0或1。我已经过滤掉了只有零值的行,因此所有行都应至少有一个“ 1”。
首先,我想得到以下结果:
df2
Date A B C
0 2020-08-17 2 1 1
3 2020-08-18 1 2 0
4 2020-08-19 0 0 1
...
那我想得到这个结果:
df3
Date Summary
0 2020-08-17 A=2|B=1|C=1
1 2020-08-18 A=1|B=2
2 2020-08-19 C=1
...
实现此目标的有效方法是什么?
答案 0 :(得分:0)
首先我们要做
s1 = df.groupby('Date', as_index=False).sum()
Out[5]:
Date A B C
0 2020-08-17 2 1 1
1 2020-08-18 1 2 0
2 2020-08-19 0 0 1
然后
s = s1.melt('Date')
s = s[s.value!=0]
s2 = (s.variable + '=' + s.value.astype(str)).groupby(s.Date).agg('|'.join).reset_index(name='col')
Out[17]:
Date col
0 2020-08-17 A=2|B=1|C=1
1 2020-08-18 A=1|B=2
2 2020-08-19 C=1