Reputation: 479
I have 2 dataframes (dfA, dfB)
I have another dataframe dfC which has a column called 'SOURCE'. Values of SOURCE will either be dfA or dfB.
I am trying to go row by row on dfC and depending on the SOURCE field, either update dfA or dfB.
To do this I tried to create a variable 'a' which will take the value of SOURCE. The issue is, 'a will equal 'dfA' or 'dfB' (reads it as a string). I cannot use this string to call the correct dataframe (error thrown)
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']]
Upvotes: 1
Views: 7247
Reputation: 88
I suggest to use pandas.DataFrame.update which updates dataframe based on index.
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'])
Using for loop in pandas is usually discouraged.
Upvotes: 1
Reputation: 3926
Just use if-else in your loop;
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"
Does this sound reasonable?
Upvotes: 1