比较不同大小的数据帧,如果满足条件,则创建一个新的数据帧

问题描述 投票:1回答:2

我需要帮助来解决以下问题:

我有两个(2)大小不同的数据帧。我需要比较这些值,如果满足条件,请替换数据框1中的值。

如果数据框1中的Material和Char的值=“ Y”,则需要从数据框2中获取“ Required或Optional”值。如果是Required,则将“ Y”替换为“ Y_REQD”如果为可选,则将“ Y”替换为“ Y_OPT”。

我一直在使用For循环,但是现在代码变得太复杂了,这提示我这可能不是最好的方法。

提前感谢。

enter image description here

python pandas dataframe size
2个回答
0
投票

这更像是pivot问题,然后我们可以reindex数据帧然后求和

df1=df1.replace({'Y':'Y_'})+df2.pivot(*df2.columns).reindex_like(df1).fillna('')

0
投票

大多同意@WeNYoBen的回答。但是要使其完全正确,需要使用df.replace修改dataframe2。

简短版:

df1=df1.replace({'Y':'Y_'})+df2.replace({'Rqd': 'REQD', 'Opt': 'OPT'}).pivot(*df2.columns).reindex_like(df1).fillna('')

长版:

# break short into steps 
# 1. replace
df2 = df2.replace({'Rqd': 'REQD', 'Opt': 'OPT'})

# 2. pivot
df2 = df2.pivot(*df2.columns)

# 3. reindex
df2 = df2.reindex_like(df1)

# 4. fillna(cleanup df with string form)
df2 = df2.fillna('')

# 5. map on df1 and add up with df2
df1=df1.replace({'Y':'Y_'})+df2

希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.