对于两个系列:一个带有数字标识符,另一个是将这些标识符与名称相关联的查找,我如何加入它们?例子:
带有数字 ID 的系列:
data_series = pd.Series(np.random.randint(0,100,5),
index = ["id_"+i for i in np.arange(5).astype('str')])
print(data_series)
id_0 38
id_1 35
id_2 36
id_3 32
id_4 94
dtype: int64
带有要查找的名称的系列:
name_lookup_series = pd.Series(['Google','YouTube','Facebook','Baidu','Wikipedia'],
index=["id_"+i for i in np.arange(5).astype('str')])
print(name_lookup_series)
id_0 Google
id_1 YouTube
id_2 Facebook
id_3 Baidu
id_4 Wikipedia
dtype: object
所需的数据帧:
Google 38
YouTube 35
Facebook 36
Baidu 32
Wikipedia 94
dtype: int64
我可以通过破解 Pandas-fu 来做到这一点,但这join
是一个看起来很普通的操作,我认为有一种更惯用的方法来做到这一点。我目前的方法:
data_series.index = data_series.index.map(lambda x: name_lookup_series.loc[x])
有没有另一种方法可以做到这一点,最好使用更简洁的代码并在一行中?
rename
仅使用- 因为使用index
:
s = data_series.rename(name_lookup_series)
#it is same as
#s = data_series.rename(index=name_lookup_series)
print (s)
Google 29
YouTube 57
Facebook 48
Baidu 16
Wikipedia 14
dtype: int32
另一个解决方案 - 有点复杂 - 转换为Series
and map
:
data_series.index = data_series.index.to_series().map(name_lookup_series)
print (data_series)
Google 29
YouTube 57
Facebook 48
Baidu 16
Wikipedia 14
dtype: int32
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句