如何迭代多个数据框的特定列,然后比较它们的值以找到最大的一个?

How to iterate over a specific column of multiple dataframes and then compare their values to find the greatest one?

为了详细说明,我有 3 个数据框,其中包含各个城市的收入数据。我将 3 家公司的数据分别存储在这 3 个数据框中,所以我只想知道哪家公司的城市收入最高。

df1 看起来像:

{[city: A, B, C, D, E] , [revenue: 10,20,25,30,70]}

df2 看起来像:

{[city: A, C, D, E, F] , [revenue: 13, 23, 33, 43, 53]}

df3 看起来像:

{[city: A, B, C, D, E] , [revenue: 11,22,32,44,55]}

正如我们所见,并不是所有的公司都在所有的城市。我正在考虑做一个嵌套循环来完成这个任务并遍历列,然后如果城市匹配,比较收入并找到最大的公司(也必须将其存储在新的 df 中的某个地方)但我不能想想究竟如何。

IIUC,将所有DataFrames合并成一个,找出最大值的城市:

df1 = pd.DataFrame({"city": ["A", "B", "C", "D", "E"] , "revenue": [10,20,25,30,70]})
df2 = pd.DataFrame({"city": ["A", "C", "D", "E", "F"] , "revenue": [13, 23, 33, 43, 53]})
df3 = pd.DataFrame({"city": ["A", "B", "C", "D", "E"] , "revenue": [11,22,32,44,55]})


df_all = pd.concat([df.set_index("city").rename(columns={"revenue": i + 1}) 
                    for i, df in enumerate([df1, df2, df3])], axis=1)

df_all["company_max"] = df_all.idxmax(axis=1)

      1     2     3  company_max
A  10.0  13.0  11.0         2
B  20.0   NaN  22.0         3
C  25.0  23.0  32.0         3
D  30.0  33.0  44.0         3
E  70.0  43.0  55.0         1
F   NaN  53.0   NaN         2