Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中使用zip函数对多个列进行迭代会产生错误_Python_Pandas_Dataframe - Fatal编程技术网

在python中使用zip函数对多个列进行迭代会产生错误

在python中使用zip函数对多个列进行迭代会产生错误,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个熊猫数据框,如下所示: 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

我有一个熊猫数据框,如下所示:

    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
我想为单元格值创建其他列,如5856。因此,如果5856出现在任何dxs列中的特定行中,将有一个值为1或0的列5856。我正在使用这个代码。它不会给出任何错误,但会发出警告,并且不会以正确的方式填充新列

X11['5856'] = np.NAN
i = 0

for value in zip(X11.loc[:,'dx1':'dx59']):
    if value == 5856:
        X11['5856'][i] = 1
    else:
        X11['5856'][i] = 0
    i+1
我得到的是这样的警告:

C:\Anaconda3\lib\site-packages\ipykernel\__main__.py:8: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame
我得到了5856列的值:0,NaN,NaN

这是预期的结果:事实上,我想为不同的单元格值(如25041、5363等)创建多个列

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

要在数据帧中查找特定值,我将使用
.isin
方法,如下所示:

# Add a column
df['5856'] = df.isin([5856]).any(1)

这将返回一个布尔序列,检查所需的值是否在每一行中。然后,您只需将相对的
True
False
值替换为1和0即可。

谢谢。只需添加另一个函数就可以得到int值:df['5856']=df.isin([5856]).any(1).astype(int)