Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.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 检查索引中是否包含数字时出现问题_Python_Pandas - Fatal编程技术网

Python 检查索引中是否包含数字时出现问题

Python 检查索引中是否包含数字时出现问题,python,pandas,Python,Pandas,我有一个数据帧,我们称之为df1,如下所示 Index ID 1 90 2 508 3 692 4 944 5 1172 6 1998 7 2022 现在,如果我调用(508==df['ID'])。any(),它会返回true。但如果我有另一个数据帧df2,它看起来如下所示: Index Num 1 83 2

我有一个数据帧,我们称之为df1,如下所示

    Index   ID
    1       90
    2       508
    3       692
    4       944
    5       1172
    6       1998
    7       2022
现在,如果我调用(508==df['ID'])。any(),它会返回true。但如果我有另一个数据帧df2,它看起来如下所示:

    Index  Num
    1      83
    2      508
    3      912
我想使用iloc检查df1的ID中是否包含NUM,并返回一个错误len(),该错误为未调整大小的对象。这正是我使用的代码:

   (df2.iloc[1][0] == df2['ID']).any()
返回上面提到的错误。我还尝试将一个变量设置为df1.iloc[1][0],但不起作用,对该变量调用int()也不起作用。有人能对此提供一些见解吗?

试着扭转局面

(df1['ID'] == df2.iloc[1][0]).any()

True
这是由于传递给它的对象如何处理
=
而导致的

在本例中,您拥有类型为的第一个对象

type(df2.iloc[1][0])

numpy.int64
第二种类型

pandas.core.series.Series
=
\uuuu eq\uuu
不能很好地处理这种组合

然而,这也起作用:

(int(df2.iloc[1][0]) == df1['ID']).any()
或:


类似这样的内容用于检查
ID
列是否位于
df2
Num
列中:

>>> df1.ID.isin(df2.Num)
Index
1    False
2     True
3    False
4    False
5    False
6    False
7    False
Name: ID, dtype: bool
或:

或者,如果您只想按索引位置查看匹配的数字:

>>> df2.where(df2.Num.isin(df1.ID) * df2.Num, np.nan)
       Num
Index     
1      NaN
2      508
3      NaN
这很有效

 (df['ID']==df2.iloc[1][0]).any()

您希望它是什么输出
True
here?
np.int64(3)=df['ID']
也返回相同的错误。虽然你说转换成int不起作用;应该这样。改变顺序也应该有效。(
(df['ID']==df2.iloc[1][0])。any()
想要的输出是什么?还要注意输入错误:
(df2.iloc[1][0]==df2['ID'])。any()
应该是
(df2.iloc[1][0]==df1['ID'])。any()
是的,输出应该是真的。是的,我打错了,应该是df1['ID']@Alexander这是一个输入错误,意思是dfGreat,这真的很有趣==是如何工作的,翻转顺序就能解决它。作为后续,假设我想将df1中没有的NUM追加到ID的末尾。我有if语句,但当我要追加时,我得到“无法连接非NDFrame对象”。这是使用df1.append(df2.iloc[0][0])和df1.append(int(df2.iloc[0][0])@JSolomonCulp您不能向这样的数据帧添加单个值,您需要添加整个系列。df1.append(df2.loc[0]))will Work OK我很害怕。就我实际处理的数据帧而言,数据帧的大小不同,因此df2有Num,但其中有一组其他数据。理想情况下,我只想将Num的值添加到只有一列的df1中。我想我可以将df1扩展为一组NaN?尝试将值放入df2.iloc[0][0]进入一个列名为“ID”的系列,看看是否有效,或者是的,你可以扩展df1或从df2Huh中删除列。翻转它会起作用,这真的很有趣。我真的不认为这么简单的事情可以解决它,但谢谢!还有很好的解释作为后续,比如我想附加作为后续的NUM,比如我nt将不在df1中的NUM追加到ID的末尾。我有if语句,但当我要追加时,我得到“无法连接非NDFrame对象”。这是使用df1.append(df2.iloc[0][0])和df1.append(int(df2.iloc[0][0])
>>> df2.where(df2.Num.isin(df1.ID) * df2.Num, np.nan)
       Num
Index     
1      NaN
2      508
3      NaN
 (df['ID']==df2.iloc[1][0]).any()