[英]How to replace the values in a dataframe column based on another dataframe condition
[英]How to replace values in a dataframe with values in another dataframe based on certain condition?
我想用數據幀“df”中相同id的“body”的值替換數據幀“result”的列“q1_body”和“q2_body”的值,代碼如下:
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控制台中收到了以下提醒,程序就停留在這里:
//anaconda/lib/python3.6/site-packages/pandas/core/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
這里:
# 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):
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.