我有2个数据帧(dfA,dfB(
我有另一个数据帧 dfC,它有一个名为"源"的列。SOURCE 的值可以是 dfA 或 dfB。
我正在尝试在 dfC 上逐行浏览,并根据源字段更新 dfA 或 dfB。
为此,我尝试创建一个变量"a",该变量将采用 SOURCE 的值。问题是,"a 将等于 'dfA' 或 'dfB'(将其读作字符串(。我不能使用此字符串调用正确的数据帧(抛出错误(
for i in [0, len(dfC.index)-1]:
a = dfC.loc[i,'Source']
temp = a[['colA', 'colB', colC']]][(a['movement_id']) == dfC.loc[i,'TEMP']]
只需在循环中使用 if-else;
for ind in range(dfC.shape[0]):
if dfC.loc[ind, 'SOURCE'] == 'dfA':
"do what you want to dfA"
if dfC.loc[ind, 'SOURCE'] == 'dfB':
"do what you want to dfB"
这听起来合理吗?
我建议使用熊猫。DataFrame.update,它基于索引更新数据帧。
dfa = DataFrame([[2],[4]], index=[1,2], columns=['val'])
dfb = DataFrame([[4],[8]], index=[1,2], columns=['val'])
dfc = DataFrame([['dfa',-1],['dfb',-2],['dfa',-3]], index=[1,1,2], columns='dest','val'])
dfa.update(dfc[dfc['dest']=='dfa'])
dfb.update(dfc[dfc['dest']=='dfb'])
通常不鼓励在熊猫中使用 for 循环。