python - 如果条件满足,则在整数列表中查找整数
问题描述
所以我有一个包含三列的 df:第一列包含名称,第二列包含 ID,第三列包含 ID 列表(以逗号分隔)。对于第一列中具有相同名称的人,我想检查一个人第二列中的 ID 是否出现在另一个人第三列中的 ID 列表中。
name id id2
Gabor 665 123
Hoak 667 100,111,112
Sherr 668 1,2,3
Hoak 669 667,500,600
Rine 670 73331,999
Rine 671 670,15
所以基本上我想让python注意到有两个叫做“Hoak”的人,并检查Hoak No.1的id 667是否出现在另一个Hoak的id2列表中(确实如此)。我试图从一种廉价的方法开始,它可以手动为我指定的任何名称,比如“Hoak”(i = 1):
import pandas as pd
df = pd.read_excel (...)
for i in range(0,len(df)):
if df['name'][i] == df['name'][1]:
if df['id'][1] in df['id2'][i]:
print(i)
但是,我越来越
TypeError:'float' 类型的参数不可迭代
我尝试添加各种变体,例如.string或str(),或 if (df['id2'][i]).str.contains("667") 之类的东西,但我无法工作它出来了,得到像这样的错误
AttributeError:“浮动”对象没有属性“字符串”
谢谢你的帮助
解决方案
您需要设置dtype
以read_excel
避免浮动问题。
要强制的数据类型。只允许使用一个 dtype。如果没有,推断
import pandas as pd
import numpy as np
df = pd.read_excel(io="test.xls", header=0, dtype={'name': np.str, 'id': np.str, 'id2': np.str})
for i in range(0,len(df)):
if df['name'][i] == df['name'][1]:
if df['id'][1] in df['id2'][i]:
print(i)
接下来,您需要更正搜索算法。
推荐阅读
- c# - 如何在 Xamarin Android Fragment 中加载工具栏布局
- macos - -lgfortran library not found mac(链接器命令失败)
- bash - 删除 BASH 中第一列包含特定字符的行
- reactjs - 如何在 Reactjs 功能组件 history.push 中使用
- android - 如何将 Spinner 设置到 Recyclerview 适配器中
- html - 使背景固定并居中的 div 居中
- r - 根据列表中的 r 和 rbind 文件中的值在列表中创建组
- xamarin - 如何在 Xamarin 表单中使用深色主题浅色主题?
- python - 如何在 Python 中更改二维数组的顺序
- bash - 具有多种分隔符的 bash 脚本中的参数