我一直很难看到有多少次一个值存在于同一列中,但另一个df。这是我的工作:
data1 = {
"Col 1": ['a','b','c'],
"Col 2": [1,2,3]
}
data2 = {
"Col 1": ['f','a','b'],
"Col 2": [4,5,6]
}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
现在我有这个代码块来查看df1的col 1中的值在df2的col 1中出现了多少次。(我只有一个col 2,因为我想展示我想在不使用iterrows的情况下如何迭代):
count = 0 #Setting the variable count
for row in df1['Col 1']: #Iterating through each row.
if row in df2['Col 1']:
count += 1 #Increasing count by 1 every time there's a repeated value.
print("Count:", count)
当我运行这个函数时,我的count返回为0,而它应该是2,因为df1 ['Col 1']和df2 [' Col 2']都共享'a'和'b'。
我相信这是一个小错误,但我会感激在正确的方向轻推。谢谢你,谢谢
2条答案
按热度按时间vshtjzan1#
在pandas中检查某个列是否包含某个值时,需要添加
.values
。如果没有它,您将创建一个带有列和索引的拼接框架,如下所示:将其更改为
print(df2['Col 1'].values)
将生成列内容的列表:['f' 'a' 'b']
,允许if
语句在该列表中查找字符串。因此,将代码更新为:
打印出:
Count:2
,你的预期答案。关于在列中查找值的更多信息可以在here中找到。rlcwz9us2#
只需找到 Dataframe 的相应列之间的
set
交集: