Python 3.x 将2个数据帧与多个条件连接,1个条件基于静态字符串
我正在寻找一个函数来解决以下问题。我有一个熊猫数据帧(df_1),看起来像这样Python 3.x 将2个数据帧与多个条件连接,1个条件基于静态字符串,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,我正在寻找一个函数来解决以下问题。我有一个熊猫数据帧(df_1),看起来像这样 Model Type Amount 0 Model 1 Price 10000 1 Model 1 Tax 2000 2 Model 1 Discount 500 3 Model 2 Price 20000 4 Model 2 Tax 4000 5 Model 3 Price 50000 M
Model Type Amount
0 Model 1 Price 10000
1 Model 1 Tax 2000
2 Model 1 Discount 500
3 Model 2 Price 20000
4 Model 2 Tax 4000
5 Model 3 Price 50000
Model Price Tax Discount
0 Model 1 10000 2000 500
1 Model 2 20000 4000 NAN
2 Model 3 50000 NAN NAN
然后,我根据df_1的唯一值创建了一个新的数据帧(df_new)
df_new = df_1.drop_duplicates(subset='Model', keep="first")
columns = ['Type', 'Amount']
df_new.drop(columns, inplace=True, axis=1)
现在,我想添加到新的数据帧。首先,我添加了更多的列。现在,我想用与Excel的vLookUp公式或index+match类似的方式填充每一列。我必须符合2个标准,来自我的df_新模型,但也有一个字符串。在我的示例中,我要匹配的字符串是“Tax”、“折扣”。。。但可能还有更多
最后,我的df_new应该是这样的
Model Type Amount
0 Model 1 Price 10000
1 Model 1 Tax 2000
2 Model 1 Discount 500
3 Model 2 Price 20000
4 Model 2 Tax 4000
5 Model 3 Price 50000
Model Price Tax Discount
0 Model 1 10000 2000 500
1 Model 2 20000 4000 NAN
2 Model 3 50000 NAN NAN
如果有人能给我指出正确的方向,我将不胜感激。
非常感谢 看起来就是你想要的:
df.pivot("Model", "Type", "Amount")
Type Discount Price Tax
Model
Model 1 500.0 10000.0 2000.0
Model 2 NaN 20000.0 4000.0
Model 3 NaN 50000.0 NaN
如果您需要与上面的数据输出完全相同,则需要执行以下步骤:
(df
.pivot("Model", "Type", "Amount")
.reindex(df.Type.unique(), axis=1)
.rename_axis(columns=None)
.reset_index())
Model Price Tax Discount
0 Model 1 10000.0 2000.0 500.0
1 Model 2 20000.0 4000.0 NaN
2 Model 3 50000.0 NaN NaN
非常感谢你。这种方法对我有效。