将列表追加到dataframe并添加计数

2024-05-20 18:44:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫数据框和一个列表-

d={'abc':[0,2,4,5,2,2],'bec':[0,5,6,4,0,2],'def':[7,6,0,1,1,2],'rtr':[5,6,7,2,0,3],'rwr':[5,6,7,1,0,5],'xx':[4,5,6,7,8,7]}

X=pd.DataFrame(d)




   abc  bec  def  rtr  rwr  xx
0    0    0    7    5    5   4
1    2    5    6    6    6   5
2    4    6    0    7    7   6
3    5    4    1    2    1   7
4    2    0    1    0    0   8
5    2    2    2    3    5   7
    
l=[ 'bec','def','cef','ghd','rtr','fgh','ewr']

现在,我想通过以下方式将列表附加到数据帧-

对于dataframe中的每一行,我们计算其中非零元素的数量(假设第一行有3个)

我们取3=1.5的50%(四舍五入为1),并将列表l中的许多元素添加到行中(从开头开始)。对于第一行,它是“bec”,因为“bec”已经存在于 我们将其计数增加1

如果列表中的元素不在数据框中,我们将其追加到末尾

干运行-

对于第1行(索引1)-非零元素的数量为6。因此,其中50%为3。因此,我们从列表['bec'、'def'、'cef']中选取前3个元素。“bec”已经存在,因此其计数增加1,变成(2,2)=6。 类似地,“def”存在,因此它变为(2,3)=7。“cef”不存在于数据帧中,因此我们添加它并将计数设为1

最终输出如下所示-

   abc  bec def rtr rwr xx cef
0   0   1   8   5   5   4   0
1   2   6   7   6   6   5   1
2   4   7   1   7   7   6   0
3   5   5   2   2   1   7   1
4   2   1   1   0   0   8   0
5   2   1   1   3   5   7   1

Tags: 数据元素dataframe列表数量defcefpd
1条回答
网友
1楼 · 发布于 2024-05-20 18:44:12

我们可以使用^ {CD1>}+^ {CD2>}沿{{CD3}}计算每行中的非零值,然后用{{CD4>}来计算这些计数的{{CD6}},然后在列表理解中使用^ {CD7>}方法创建一个记录列表,现在创建一个数据文件,从这些记录中让^ {< CD8>}和^ {CD9>}用^ ^表示。{}以获得所需的结果

y = pd.DataFrame(dict.fromkeys(l[:i], 1) 
                 for i in X.ne(0).sum(1).floordiv(2).astype(int))
X.add(y.fillna(0), fill_value=0).astype(int)

   abc  bec  cef  def  rtr  rwr  xx
0    0    1    0    8    5    5   4
1    2    6    1    7    6    6   5
2    4    7    0    1    7    7   6
3    5    5    1    2    2    1   7
4    2    1    0    1    0    0   8
5    2    3    1    3    3    5   7

相关问题 更多 >