Python大熊猫;用pivot_table填充数据框

时间:2017-06-28 08:59:18

标签: python pandas pivot-table

我有一个大的python脚本,它生成两个数据帧A和B,最后,我想用数据帧B的值填充数据帧A,并保留数据帧A的列,但它不会好。

Dataframe A就像这样

A   B    C    D    
1   ab
2   bc
3   cd

Dataframe B:
A  BB  CC 
1  C   10
2  C   11 
3  D   12

我的输出必须是:

新数据框

A   B    C   D  
1   ab   10
2   bc   11
3   cd       12  

但我的输出是

A   B    C   D  
1   ab   
2   bc   
3   cd        

为什么不填写数据框B的值? 我的命令是

dfnew = dfB.pivot_table(index='A', columns='BB', values='CC').reindex(index=dfA.index, columns=dfA.columns).fillna(dfA)

1 个答案:

答案 0 :(得分:0)

我认为您需要index dfdfA = pd.DataFrame({'A':[1,2,3], 'B':['ab','bc','cd'], 'C':[np.nan] * 3,'D':[np.nan] * 3}) print (dfA) A B C D 0 1 ab NaN NaN 1 2 bc NaN NaN 2 3 cd NaN NaN dfB = pd.DataFrame({'A':[1,2,3], 'BB':['C','C','D'], 'CC':[10,11,12]}) print (dfB) A BB CC 0 1 C 10 1 2 C 11 2 3 D 12 df = dfB.pivot_table(index='A', columns='BB', values='CC') print (df) BB C D A 1 10.0 NaN 2 11.0 NaN 3 NaN 12.0 dfA = dfA.set_index('A').fillna(df).reset_index() #dfA = dfA.set_index('A').combine_first(df).reset_index() print (dfA) A B C D 0 1 ab 10.0 NaN 1 2 bc 11.0 NaN 2 3 cd NaN 12.0 对齐数据,set_indexfillna以及最后combine_first

Crypto/include/Poco/Crypto/CryptoTransform.h