Python 有没有办法从不同的数据集中找出另一列中出现的每一列值?
我有两个数据集:dataset1和dataset2(提供了图像链接),它们有一个公共列,名为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 及
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)