Python 有没有办法从不同的数据集中找出另一列中出现的每一列值?

Python 有没有办法从不同的数据集中找出另一列中出现的每一列值?,python,data-science,Python,Data Science,我有两个数据集:dataset1和dataset2(提供了图像链接),它们有一个公共列,名为SAX,它是一个字符串对象 dataset1= SAX 0 glngsyu 1 zicobgm 2 eerptow 3 cqbsynt 4 zvmqben .. ... 475 rfikekw 476 bnbzvqx 477 rsuhgax 478 ckhloio 479 lbzujtw 480 rows × 2 columns 及

我有两个数据集:dataset1和dataset2(提供了图像链接),它们有一个公共列,名为
SAX
,它是一个字符串对象

dataset1=
         SAX
0    glngsyu
1    zicobgm
2    eerptow
3    cqbsynt
4    zvmqben
..       ...
475  rfikekw
476  bnbzvqx
477  rsuhgax
478  ckhloio
479  lbzujtw

480 rows × 2 columns

每当
dataset1
SAX
列中的值存在于
dataset2的
SAX
列中时,我需要查找并打印时间戳。 是否有实现上述功能/方法


谢谢。

让我们创建一个任意数据集来展示它的工作原理:

将熊猫作为pd导入
将numpy作为np导入
def sax_发生器(数量):
在范围(num)内返回[''''.join(chr(x)表示np.random.randint(97,97+26,size=4)]
df1=pd.DataFrame(sax_生成器(10),列=['sax'])
df2=pd.DataFrame({'sax':sax_生成器(10),'timestamp':范围(10)})
让我们看一下数据:

df1 = 
|    | sax   |
|---:|:------|
|  0 | cvtj  |
|  1 | fmjy  |
|  2 | rjpi  |
|  3 | gwtv  |
|  4 | qhov  |
|  5 | uriu  |
|  6 | kpku  |
|  7 | xkop  |
|  8 | kzoe  |
|  9 | nydj  |

df2 =
|    | sax   |   timestamp |
|---:|:------|------------:|
|  0 | kzoe  |           0 |
|  1 | npyo  |           1 |
|  2 | uriu  |           2 |
|  3 | hodu  |           3 |
|  4 | rdko  |           4 |
|  5 | pspn  |           5 |
|  6 | qnut  |           6 |
|  7 | gtyz  |           7 |
|  8 | gfzs  |           8 |
|  9 | gcel  |           9 |
现在确保我们在
df1
中的
df2
中有一些匹配值,我们可以稍后检查:

df2['sax'][2]=df1['sax'][5]
df2['sax'][0]=df1['sax'][8]
然后使用:

df2.loc[df1.sax.apply(lambda x:df2.sax.str.contains(x)).any(),'timestamp']
要获得:

|    |   timestamp |
|---:|------------:|
|  0 |           0 |
|  2 |           2 |
使用
np。其中
还可以获取索引:

np.where(df1.sax.apply(lambda x: df2.sax.str.contains(x)) == True)
# -> (array([5, 8]), array([2, 0]))
在这里,我们可以看到
df1
具有匹配的索引
[5,8]
,而
df2
具有
[2,0]
,这正是我们在上面几行中实施的。。。 如果我们查看
df1.sax.apply(lambda x:df2.sax.str.contains(x))
的返回,上面的结果与索引完全匹配(magic…whoo):


步骤1:使用以下命令将数据集2转换为dict: 将numpy作为np导入 作为pd进口熊猫

a_dictionary = df.to_dict['list]
步骤2:在for循环中使用比较器提取时间戳。

lookup_value = "abcdef" #This can be a list item.

all_keys = []
for key, value in a_dictionary.items():
    if(value == lookup_value):
         all_keys.append(key)

print(all_keys)

第三步:享受吧

这是关于为什么不将数据作为图像的一个很好的讨论。@udkr:如果您觉得我的答案有帮助,如果您能将其标记为正确(单击勾号),我将不胜感激。谢谢大家!@Albo:是的,伙计,谢谢你的帮助,我会点击勾号。@Albo:嘿,如果我还需要数据集2的SAX,只要数据集1和2的SAX之间存在匹配怎么办?将
SAX
添加到
loc
的列部分,比如:
df2.loc[df1.SAX.apply(lambda x:df2.SAX.str.contains(x)).any(),['timestamp',SAX']
a_dictionary = df.to_dict['list]
lookup_value = "abcdef" #This can be a list item.

all_keys = []
for key, value in a_dictionary.items():
    if(value == lookup_value):
         all_keys.append(key)

print(all_keys)