【发布时间】:2020-08-26 17:36:36
【问题描述】:
我尝试使用 pandas 在数据框中选择行,但不知何故我找不到与我的案例类似的示例。解决方案应该很简单,但我有点卡住了。
- 有两个数据框
kg_df:
source edge target
0 Jack bought apple
和mylist:
Unnamed URL Length Match Text
0 0 http://example.com/Alice 5 Alice
1 1 http://example.com/Finn 4 Finn
2 2 http://example.com/Jack 4 Jack
以上数据只是一个例子(一种情况)。每次生成新数据时,dataframes中的数据都不一样。
- 我想从
mylist中选择一行,使用kg_df中的值(即Jack 在两个数据帧中匹配),但我想做不同的操作,如果两个数据帧之间只有匹配,因为有时没有匹配项(以上情况有匹配项,因为Jack出现在两个数据帧中)。
obj = kg_df['source'].values[0]
objhit = mylist[mylist['Match Text'] == obj]
if len(objhit) == 1:
objURI = objhit ['URL']
object1 = URIref(objURI[2])
所以我检查了len == 1,但我无法获得object1。上面的代码之所以有效,是因为我指定了行号 (objURI[2])。但是,我当然不知道 objhit 的结果是找到 [1] 还是 [99]。如何在不知道行号的情况下正确获取 object1?
非常感谢!
【问题讨论】:
-
请添加更多说明!
-
我认为您正在检查列表是否相等,而不是检查它们是否具有共同元素
-
对不起,@Anurag Dhadse,如果您不理解我的问题。但我也不知道你不明白什么......所以我无法更好地解释它,除非你指定哪个部分是不可理解的。下面的 Vasil Yordanov 很困惑,但至少给了我一个答案。
-
@Phineas。感谢您的评论,但两者有区别吗?解决我的问题应该是什么意思?有什么建议可以重构我的代码吗?干杯
-
当两个列表相等时,它们的所有元素都相同。我知道你只需要找到共同的元素,而不是如果列表相等