我正在尝试count
中values
的金额pandas df
。我想通过row
做row
。因此,对于下面的df
,我想count
导出的每个values
中column
的{{1}}的数量row
row
我尝试使用以下方法做到这一点:
d = ({
'A' : [[(1,2),(3,4)],[(1,2)],[()],[(1,2)]],
'B' : [[(1,2)],[(1,2)],[(1,2),(3,4)],[(1,2)]],
'C' : [[(1,2)],[()],[()],[()]],
'D' : [[()],[(1,2),(3,4)],[(1,2),(3,4)],[()]],
})
df = pd.DataFrame(data=d)
输出
l = ([len(i) for i in df])
我希望预期的输出是:
[1, 1, 1, 1]
答案 0 :(得分:0)
将applymap
与if-else
一起使用:
df = df.applymap(lambda x: len(x) if x != [()] else 0)
#alternative
#df = df.applymap(lambda x: 0 if x == [()] else len(x))
print (df)
A B C D
0 2 1 1 0
1 1 1 0 2
2 0 2 0 2
3 1 1 0 0
最后一次是否需要转置输出:
df1 = pd.DataFrame(df.T.values, index=df.index, columns=df.columns)
print (df1)
A B C D
0 2 1 0 1
1 1 1 2 1
2 1 0 0 0
3 0 2 2 0