繁体   English   中英

如何将两个数据框合并在一起而没有共同的ID?

[英]How to merge two data frames together with no common ID?

我试图从这里运行示例代码:

https://www.dataquest.io/blog/k-nearest-neighbors-in-python/

样本数据可在此处获得:

https://www.dropbox.com/s/b3nv38jjo5dxcl6/nba_2013.csv?dl=0

我在这里收到错误:

lebron_normalized = nba_normalized [nba [“player”] ==“LeBron James”]

错误:KeyError:'player'

当我查看数据集时,我发现nba_normalized没有名为player的字段,因为nba_normalized只是数字。 如何找到勒布朗詹姆斯的归一化向量,并在此基础上找到euclidean_distances

是的,我很确定OP因为KeyError而在某个时刻覆盖了nba

为了解释一下,屏蔽操作不是合并,而是在数据帧的子集上执行的真/假向量,因此您不必担心加入密钥,而是更有兴趣确保数据帧的组成相似。

import pandas as pd

nba = pd.read_csv('nba_2013.csv')
distance_columns = ['age', 'g', 'gs', 'mp', 'fg', 'fga', 'fg.', 'x3p', 'x3pa', 'x3p.', 'x2p', 'x2pa', 'x2p.', 'efg.', 'ft', 'fta', 'ft.', 'orb', 'drb', 'trb', 'ast', 'stl', 'blk', 'tov', 'pf', 'pts']

nba_numeric = nba[distance_columns]

nba_normalized = (nba_numeric - nba.mean()) / nba_numeric.std()

def lebron(x):
    if "lebron" in x.lower():
        return True
    return False

lebron_normalized = nba_normalized[nba.player.isin(set(filter(lebron, nba.player)))]

# Heh
print(lebron_normalized.head(4))

在此输入图像描述 我运行了代码,它对我有用(必须将sort更改为sort_values,因为更新版本的Pandas)。

以下陈述不正确,如果是这样,那么你做错了。

nba_normalized只是数字

当你这样做时:

nba_normalized = (nba_numeric - nba_numeric.mean()) / nba_numeric.std()

nba_numeric是一个pandas数据帧。 当我们对数据帧进行操作时,我们将减去并划分数据的所有列的标量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM