如何扫描pandas行中的第一个非零值并用数字创建新列

2024-06-08 08:50:32 发布

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

我有一个像下面这样的大数据集:

+---+--------------------------------------+---------------------------------------+--------------------------+
|   | dc(uid): interaction_single_message_ | dc(uid): interaction_single_message_1 | dc(uid): interaction_yes |
+---+--------------------------------------+---------------------------------------+--------------------------+
| 0 |                                    0 |                                     0 |                    89884 |
| 1 |                                    0 |                                    29 |                        0 |
| 2 |                                    0 |                                   239 |                      239 |
| 3 |                                  324 |                                     0 |                        0 |
| 4 |                                12021 |                                     0 |                    12021 |
+---+--------------------------------------+---------------------------------------+--------------------------+

如何逐行选择遇到的第一个数字并将其添加到同一索引的新列中。如果一行有多个数字,它们总是相同的,这就是为什么我要第一个遇到的数字。在

理想的输出是这样的:

^{pr2}$

我会用吗groupby.unique()这样做?在


Tags: 数据messageuid数字dcyesuniquegroupby
1条回答
网友
1楼 · 发布于 2024-06-08 08:50:32

在您的示例df中,只要所有的当前值都是相同的,那么下面就可以工作了,我们使用一个布尔条件来屏蔽0值,然后调用^{}并传递param axis=1来计算平均行数:

In [24]:

df[df>0].mean(axis=1)
Out[24]:
0    89884
1       29
2      239
3      324
4    12021
dtype: float64

相关问题 更多 >