繁体   English   中英

Pandas 根据来自不同 DataFrame 的值添加新列

[英]Pandas Add New Columns Based on Vaues from Different DataFrame

我有下面的dataframe,姑且称之为df1

id      level       a   b   c   d
1       One         1   3   4   4
1       two         1   3   4   
2       One         1   3   4   4
2       two         1   3   4   

然后,还有第二个 dataframe,df2。

id      Type    Value
1       a      11
1       b      22
1       c      33
1       d      44      
2       a      91
2       b      92
2       c      93
2       d      94 

我想要比较 df1 和 df2 的值以添加新列,如下所示。 添加名为type _ s新列,其值来自 df2。

id      level       a   b   c   d   a_s  b_s  c_s  d_s
1       One         1   3   4   4   11   22   33   44
1       two         1   3   4       11   22   33   44   
2       One         1   3   4   4   91   92   93   94
2       two         1   3   4       91   92   93   94

堆叠、取消堆叠 df2 并与 df 合并

pd.merge(df,df2.set_index(['id','Type']).stack().unstack('Type').reset_index().drop(columns=['level_1']), how='left',on='id',suffixes=('', '_s'))

    id level  a  b  c    d  a_s  b_s  c_s  d_s
0   1   One  1  3  4  4.0   11   22   33   44
1   1   two  1  3  4  NaN   11   22   33   44
2   2   One  1  3  4  4.0   91   92   93   94
3   2   two  1  3  4  NaN   91   92   93   94

或 pivot df2 并合并

pd.merge(df,pd.pivot(df2, index='id', columns='Type').droplevel(0, axis=1).reset_index(), how='left',on='id',suffixes=('', '_s'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM