2016-11-30 26 views
2

熊猫DataFrames我有一个数据帧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 

第二个数据帧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" } 

我想用字典中的元素作为关键字来分割两个数据框:Colu由F栏,由F栏,由列H柱C和列d通过柱G.列B MN甲结果应该是:

df3.head 

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

感谢。

+0

你能证明你的努力,这并不难做到 – EdChum

+0

什么你通过我的努力意思?我对如何开始没有任何想法。我想过将它们合并,但我仍然不知道如何告诉熊猫使用字典作为重点 –

回答

2

遍历你的字典的项目,并划分形成在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) 

enter image description here

注:我已经改变了你的字典的名称,因为它是不建议使用dict他们的名字也对应于内置式由办法。

+1

它的工作原理,由于在同一个数据帧分两列! –

2

所有你需要做的是使用/运营商直接向列或数据帧系列。

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


df3.head() 

enter image description here

+1

谢谢您的回答 –

相关问题