首页 > 解决方案 > 比较不同大小的数据框,如果满足条件则创建一个新的

问题描述

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

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

如果 Dataframe 1 中 Material 和 Char 的值是 =“Y”,我需要从 Dataframe 2 中获取“必需或可选”值。如果是必需的,那么我将“Y”替换为“Y_REQD”,否则如果它是可选然后将“Y”替换为“Y_OPT”。

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

提前致谢。

在此处输入图像描述

标签: pythonpandasdataframesize

解决方案


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

希望能帮助到你。


推荐阅读