【发布时间】:2021-07-07 07:03:39
【问题描述】:
我有两个数据框 df 和 hash_file 如下所示
df = pd.DataFrame({'source_description':['test1', 'test1','test2','test3','test5']})
hash_file = pd.DataFrame({'source_code':['test1','test2','test3','test5'],
'hash_id':[911,512,713,814]})
id_file = hash_file.set_index(['source_code'])['hash_id']
cols = ["seq_id","desc","key_id"]
test_df = pd.DataFrame(columns=cols)
我想做两件事
a) 将source_description 复制到test_df['desc'] 列
b) 将对应的hash_id 复制到test_df['key_id'] 列
虽然我已经尝试了以下方法,但由于某种奇怪的原因,它为我的所有 key_id 行返回 NA
test_df["seq_id"] = df.index + 1
test_df["desc"] = df['source_description']
test_df["key_id"] = df['source_description'].map(id_file)
但是,当我仅单独尝试以下行时,它工作正常并且能够看到在 jupyter notebook 提示符中显示的 key_ids。
df['source_description'].map(id_file)
但是当我出于某种原因将其分配给test_df['key_id] 时,我只看到NA
我在创建 test_df 和分配列名时是否犯了任何错误?
我还尝试清除 jupyter notbook cache, reset the kernel 所做的一切,但代码仍然返回 NA。虽然我上面显示的只有 3 列,但我的真实数据有超过 25 列,我对所有 25 列都做了类似的分配选项。是不是像 Jupyter notebook 厌倦了作业?我不知道为什么正确的代码返回的结果不正确
请帮帮我吗?
我希望我的输出如下所示
seq_id desc key_id
1 test1 911
2 test1 911
3 test2 512
4 test3 713
5 test5 814
【问题讨论】:
标签: python pandas dataframe pandas-groupby series