通过迭代datafram中的行来创建新列

2024-04-25 09:17:21 发布

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

我有这样一个数据框:

    dx1      dx2    dx3    dx4    dx5       dx6     dx7
0   25041   40391   5856    0     V4511    V5867    30000
1   25041   40391   25081   5856  5363     3572     0
2   25041   40391   42822   0     5856     0        0
3   25061   40391   0       0     0        0        0
4   25041   40391   0       5856  25081    V4511    25051

我想为单元格值创建附加列,如25041403915856等。因此,如果25041出现在任何dxs列的特定行中,将有一个值为1或0的列25041。我使用这个代码,它的工作。你知道吗

X11['25041'] = X11.isin(['25041']).any(1).astype(int)

我想为每一个单元格创建许多相似的值,但每个单元格中都有许多相似的值。为此,我想使用For循环。我做了以下工作:

1)从数据帧创建numpy矩阵

mat = X11.as_matrix(columns=None)

2)统计单元格值的唯一出现次数

values, counts = np.unique(mat.astype(str), return_counts=True)

3)但当我试图运行此代码时,它并没有像预期的那样输出正确的列:

for x in np.nditer(values):
    print (x)
    X11['x'] = X11.isin(['x']).any(1).astype(int)

打印所有单元格(x)的唯一值。但在X11数据帧中,只有一个新列x附加了0个值。你知道吗

然而,当我手动一个接一个地为每个单元格值执行类似操作时,我会将新的列添加到数据帧中。你知道吗

X11['5856'] = X11.isin(['5856']).any(1).astype(int)

我有数百个单元格值,因此无法手动执行。你知道吗?你知道吗


Tags: 数据代码npany手动intvaluesmat