gpt4 book ai didi

python - 属性来自另一个 Dataframe 的数字 - Series([], Name : id, dtype: float64)

转载 作者:太空宇宙 更新时间:2023-11-04 04:19:11 25 4
gpt4 key购买 nike

我有两个 pandas Dataframes,第一个名为 source 我们有 ID 和 Names (ID, Username) source.head()

enter image description here

第二个名为 data_code,其中我们也只有 unsernames (0) 列和一个代码列,我将在其中尝试获取 ID。

data_code.head()

enter image description here

我所做的是创建一个函数,该函数将在两个 Dataframes 中查找相同的 Usenames,并从源 Dataframe 中获取用户名的 ID,如果不存在,它将生成一个随机 ID。在我的解决方案中,我尝试创建一个字典,其中我将只有唯一值。

uniqueIDs = data_code[0].unique()
FofToID= {}

然后我将使用这个函数用 Id 填充字典

for i in range(len(uniqueIDs)):   
if uniqueIDs[i] in list(source["username"]):
FofToID[uniqueIDs[i]]= np.float_(source[source["username"]==i]["id"])
else:
FofToID[uniqueIDs[i]]= int(random.random()*10000000)

输出如下: enter image description here我的问题是 source Dataframe 中存在的所有值都获得值 Series([], Name: id, dtype: float64)。我试图解决这个问题,但我失败了。

最佳答案

使用merge使用左连接,对于不存在的值 id 使用 fillna最后通过 set_index 创建 Seriesto_dict :

source = pd.DataFrame({'id':[111111,222222,666666,888888], 'username':['aa','ss','dd','ff']})
data_code = pd.DataFrame({'code':[0]*4, 0:['ss','dd','rr','yy']})


FofToID = (data_code.merge(source, left_on=0, right_on='username', how='left')
.fillna({'id': int(random.random()*10000000)})
.set_index(0)['id']
.to_dict()
)
print (FofToID)
{'ss': 222222.0, 'dd': 666666.0, 'rr': 367044.0, 'yy': 367044.0}

关于python - 属性来自另一个 Dataframe 的数字 - Series([], Name : id, dtype: float64),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54823507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com