如何将字符串转换为dataframe名称/python

如何将字符串转换为dataframe名称/python,python,pandas,numpy,Python,Pandas,Numpy,我有2个数据帧(dfA,dfB) 我有另一个数据帧dfC,它有一个名为“SOURCE”的列。源的值将是dfA或dfB 我正在尝试在dfC上逐行执行,并根据源字段,更新dfA或dfB 为此,我尝试创建一个变量“a”,它将接受SOURCE的值。问题是,‘a将等于‘dfA’或‘dfB’(将其读取为字符串)。我无法使用此字符串调用正确的数据帧(抛出错误) 只要在循环中使用if-else for ind in range(dfC.shape[0]): if dfC.loc[ind, 'SOURCE'

我有2个数据帧(dfA,dfB)

我有另一个数据帧dfC,它有一个名为“SOURCE”的列。源的值将是dfA或dfB

我正在尝试在dfC上逐行执行,并根据源字段,更新dfA或dfB

为此,我尝试创建一个变量“a”,它将接受SOURCE的值。问题是,‘a将等于‘dfA’或‘dfB’(将其读取为字符串)。我无法使用此字符串调用正确的数据帧(抛出错误)


只要在循环中使用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"

这听起来合理吗?

只要在循环中使用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"

这听起来合理吗?

我建议使用pandas.DataFrame.update,它根据索引更新DataFrame

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'])

通常不鼓励在pandas中使用for循环。

我建议使用pandas.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'])

通常不鼓励在pandas中使用for循环。

能否发布数据帧,以便我们查看列和示例数据?使用df.head()而不是将df作为字符串传递,为什么不直接传递变量本身呢<代码>'dfA','dfB'到
dfA,dfB
目标不是硬编码,因为dfC将不断增长。有没有办法将字符串转换为变量名?这将解决您可以使用的问题,但请记住,这通常是设计不好的标志。您可以发布您的数据帧以便我们可以查看列和示例数据吗?使用df.head()而不是将df作为字符串传递,为什么不直接传递变量本身呢<代码>'dfA','dfB'到
dfA,dfB
目标不是硬编码,因为dfC将不断增长。有没有办法将字符串转换为变量名?这将解决您可以使用的问题,但请记住,这通常是糟糕设计的标志。