DataFrame1:
Device MedDescription Quantity
RWCLD Acetaminophen (TYLENOL) 325 mg Tab 54
RWCLD Ampicillin Inj (AMPICILLIN) 2 g Each 13
RWCLD Betamethasone Inj *5mL* (CELESTONE SOLUSPAN) 30 mg (5 mL) Each 2
RWCLD Calcium Carbonate Chew (500mg) (TUMS) 200 mg Tab 17
RWCLD Carboprost Inj *1mL* (HEMABATE) 250 mcg (1 mL) Each 5
RWCLD Chlorhexidine Gluc Liq *UD* (PERIDEX/PERIOGARD) 0.12 % (15 mL) Each 5
数据框2:
Device DrwSubDrwPkt MedDescription BrandName MedID PISAlternateID CurrentQuantity Min Max StandardStock ActiveOrders DaysUnused
RWC-LD RWC-LD_MAIN Drw 1-Pkt 12 Mag/AlOH/Smc 200-200-20/5 *UD* (MYLANTA/MAALOX) (30 mL) Each MYLANTA/MAALOX A03518 27593 7 4 10 N Y 3
RWC-LD RWC-LD_MAIN Drw 1-Pkt 20 ceFAZolin in Dextrose(ISO-OS) (ANCEF/KEFZOL) 1 g (50 mL) Each ANCEF/KEFZOL A00984 17124 6 5 8 N N 2
RWC-LD RWC-LD_MAIN Drw 1-Pkt 22 Clindamycin Phosphate/D5W (CLEOCIN) 900 mg (50 mL) IV Premix CLEOCIN A02419 19050 7 6 8 N N 2
如果'MedDescription'匹配,我想要做的是将DataFrame2值附加到数据帧1。当它找到匹配时,我想只添加dataFrame2 [Min,Max,Days Unused]中的某些列,这些列都是整数
我有一个迭代解决方案,我一次访问数据帧1对象1行,然后检查与数据帧2的匹配,找到后我将那里的列号附加到原始dataFrame。
有更好的方法吗?它使我的计算机慢慢爬行,因为我有成千上万行。
答案 0 :(得分:1)
听起来您想要合并目标列(' MedDescription',' Min',' Max',' Days Unused' )df1基于匹配的' MedDescription'。
我认为最好的方法如下:
target_cols = ['MedDescription', 'Min', 'Max', 'Days Unused']
df1.merge(df2[target_cols], on='MedDescription', how='left')
如何='左'确保返回df1
中的所有数据,并且如果MedDescription匹配,则仅追加df2中的目标列。
注意:如果复制df1 / df2.to_dict()的结果,其他人会更容易。上面的数据很难解析。
答案 1 :(得分:0)
这听起来像是使用Pandas built-in functions for joining datasets的机会 - 您应该可以使用DataFrame2中的所需列加入MedDescription
。 Pandas中的join
函数非常有效,并且应该远远超过您的循环方法。
Pandas有documentation on merging datasets包含一些很好的例子,你可以在SQL教程中找到关于连接概念的大量文献。