我有一个大的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)
答案 0 :(得分:0)
我认为您需要index
df
列dfA = 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_index
或fillna
以及最后combine_first
:
Crypto/include/Poco/Crypto/CryptoTransform.h