我想替换列的值" q1_body"和" q2_body"数据帧"结果"使用" body"的值在dataframe" df"中具有相同的id,代码如下:
def replace_body(x):
id1 = result.loc[x].qid1
result.loc[x].q1_body = df[df["qid"]==id1]["body"]
id2 = result.loc[x].qid2
result.loc[x].q2_body = df[df["qid"]==id2]["body"]
result.index.map(lambda x: replace_body(x))
当我运行代码时,我在ipython控制台中收到了以下提醒,程序就停留在这里:
//水蟒/ LIB / python3.6 /站点包/大熊猫/核心/ generic.py:3110:
的切片副本上设置值
SettingWithCopyWarning:
尝试在DataFrame请参阅文档中的警告:http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
self [name] = value
希望有人能告诉我这里有什么问题。
假设两个数据帧是:
结果:
qid1 q1_body qid2 q2_body
1a abc 2a bcd
1a abc 3a cde
2a bcd 3a cde
DF:
qid body
1a sfgaks
2a shdfjk
3a adjkwf
预期的输出如下:
结果:
qid1 q1_body qid2 q2_body
1a sfgaks 2a shdfjk
1a sfgaks 3a adjkwf
2a shdfjk 3a adjkwf
答案 0 :(得分:2)
s = df.set_index('qid')['body']
result['q1_body'] = result['qid1'].map(s)
result['q2_body'] = result['qid2'].map(s)
print (result)
qid1 q1_body qid2 q2_body
0 1a sfgaks 2a shdfjk
1 1a sfgaks 3a adjkwf
2 2a shdfjk 3a adjkwf
答案 1 :(得分:1)
下面:
# Set index and get body as a series
s = df.set_index(qid)['body']
result['q1_body'] = s.loc[result['qid1']].values
result['q2_body'] = s.loc[result['qid2']].values
结果:
qid1 q1_body qid2 q2_body
0 1a sfgaks 2a shdfjk
1 1a sfgaks 3a adjkwf
2 2a shdfjk 3a adjkwf
时间(10k行,使用自动生成的Lorem):