【发布时间】:2021-10-27 03:20:18
【问题描述】:
是否可以使用两个不同的 df(s) 创建一个“搜索”循环(在一个范围内,例如:iloc 0 到 10、0 到 21 等 ..)并将最终结果输入到一个新的 df 中。
以下是我使用的手动方法。但是,它的效率非常低。
ndf0 = df[(df['result'] == rc.iloc[0]['result'])].drop_duplicates(['result'], keep='last')
ndf1 = df[(df['result'] == rc.iloc[1]['result'])].drop_duplicates(['result'], keep='last')
ndf2 = df[(df['result'] == rc.iloc[2]['result'])].drop_duplicates(['result'], keep='last')
ndf3 = df[(df['result'] == rc.iloc[3]['result'])].drop_duplicates(['result'], keep='last')
ndf4 = df[(df['result'] == rc.iloc[4]['result'])].drop_duplicates(['result'], keep='last')
ndf5 = df[(df['result'] == rc.iloc[5]['result'])].drop_duplicates(['result'], keep='last')
ndf6 = df[(df['result'] == rc.iloc[6]['result'])].drop_duplicates(['result'], keep='last')
ndf7 = df[(df['result'] == rc.iloc[7]['result'])].drop_duplicates(['result'], keep='last')
ndf8 = df[(df['result'] == rc.iloc[8]['result'])].drop_duplicates(['result'], keep='last')
..etc...
frames = [ndf0, ndf1, ndf2, ndf3, ndf4, ndf5, ndf6, ndf7, ndf8, etc..]
result = pd.concat(frames)
非常感谢,问候
示例表:
df
╔════════╦════════╗ ║结果║评分║ ╠════════╬════════╣ ║紫║11║ ║蓝色║33║ ║黄色║54║ ║绿色║55║ ║红色║64║ ║棕色║37║ ║白色║95║ ║黄金║99║ ║ 棕褐色 ║ 47 ║ ║黑色║67║ ╚════════╩════════╝rc
╔════════╗ ║结果║ ╠════════╣ ║蓝色║ ║黄色║ ║红色║ ║晒黑║ ║白色║ ╚════════╝ndf
╔════════╦════════╗ ║结果║评分║ ╠════════╬════════╣ ║蓝色║33║ ║黄色║54║ ║红色║64║ ║ 棕褐色 ║ 47 ║ ║白色║95║ ╚════════╩════════╝【问题讨论】:
-
rc看起来像什么?您能否使用df['result'].head(10)和rc['result'].head(5)的输出更新您的帖子以创建一个可重现的示例? -
嗨@Corralien,我已经用表格更新了我的帖子,希望它能更好地了解问题