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

Python 比较不同大小的数据帧,如果满足条件,则创建一个新的数据帧,python,pandas,dataframe,size,Python,Pandas,Dataframe,Size,我需要帮助来解决以下问题: 我有两(2)个不同大小的数据帧。我需要比较这些值,如果满足条件,则替换Dataframe 1中的值 如果数据框1中材质和字符的值为=“Y”,我需要从数据框2获取“必需或可选”值。如果需要,则我将“Y”替换为“Y_REQD”,否则如果是可选的,则将“Y”替换为“Y_OPT” 我一直在使用For循环,但现在代码变得太复杂,这提示我这可能不是最好的方法 提前谢谢 这更像是一个pivot问题,然后我们可以reindex数据帧,然后求和 df1=df1.replace({'Y'

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

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

如果数据框1中材质和字符的值为=“Y”,我需要从数据框2获取“必需或可选”值。如果需要,则我将“Y”替换为“Y_REQD”,否则如果是可选的,则将“Y”替换为“Y_OPT”

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

提前谢谢


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

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

这更像是一个
pivot
问题,然后我们可以
reindex
dataframe,然后求和

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

大部分人同意@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

希望有帮助。

大多数人都同意@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

希望有帮助。

请复制并粘贴数据框的内容请复制并粘贴数据框的内容