使用字典作为键划分两个 Pandas DataFrames

Divide two Pandas DataFrames using a dictionary as a key

我有一个 DataFrame df1:

 df1 = pd.DataFrame(np.random.randint(0,10,size=(10, 4)), columns=list('ABCD'))

df1.head()
   A  B  C  D
0  9  8  1  1
1  9  7  1  6
2  0  6  7  5
3  5  1  6  0
4  4  0  5  4

第二个 DataFrame df2:

  df2 = pd.DataFrame(np.random.randint(0,10,size=(10, 3)), columns=list('FGH'))

df2.head()
   F  G  H
0  8  5  9
1  3  0  7
2  2  5  4
3  3  5  4
4  5  6  6

还有一个字典字典:

dict = {"A" : "F", "B" : "F", "C" : "H", "D" : "G" }

我想使用字典的元素作为键来划分两个Dataframes:A列F列,B列F列,C列H列和D列G列。结果应该是:

df3.head

0 1.125 1.000 0.111 0.200
1 3.000 2.333 1.429 NA
...     

谢谢。

您需要做的就是直接对 Columns 或 DataFrame Series 使用 / 运算符。

df3 = pd.DataFrame() #initialize an empty dataframe
for i in dict:
    df3[i+"/"+dict[i]] = df1[i]/df2[dict[i]]


df3.head()

遍历字典中的项目,并将 df1 中构成列名的键与值(df2 的列名)相除。这些形成了一个系列对象,其名称与键相对应。沿列方向连接它们。

最后,reindex 它们根据 df1 的列保留顺序。

df = pd.concat([pd.Series(df1[k]/df2[v], name=k) for k,v in my_dict.items()], axis=1)
df.reindex(columns=df1.columns)

注意: 我已经更改了你的词典名称,因为不建议使用 dict 来顺便给它们命名也对应一个内置类型。