Python:创建数据帧之间的映射以排除某些值
Python: Create mapping between dataframes to exclude certain values
我有两个数据框,我想在它们之间创建映射。
一个数据框如下所示:
ID A B C D
1 10 34 50 87
2 3 56 65 44
3 44 56 73 2
另一个数据框看起来像
ID A D
1 E 4.3
2 9 E
3 0.8 E
我需要在第一个数据框中排除在第二个数据框中具有 'E' 值的值。例如,应从第一个数据帧中删除 ID 1 列 A 处的值。
d = {'ID': [1, 2, 3], 'A': [10,3,44], 'B': [34,56,56], 'C':[50,65,73], 'D':[87,44,2]}
df1 = pd.DataFrame(data=d)
d2 = {'ID': [1, 2, 3], 'A': ['E',9,0.8], 'D':[4.3,'E','E']}
df2 = pd.DataFrame(data=d2)
假设 ID 为一列,并且您想要屏蔽 df1 中具有相同 ID 和 df2 列中的 E 的值。可以临时设置ID为索引,mask
:
out = (df1
.set_index('ID')
.mask(df2.reindex(columns=df1.columns).set_index('ID').eq('E'))
.reset_index()
)
输出:
ID A B C D
0 1 NaN 34 50 87.0
1 2 3.0 56 65 NaN
2 3 44.0 56 73 NaN
我有两个数据框,我想在它们之间创建映射。 一个数据框如下所示:
ID A B C D
1 10 34 50 87
2 3 56 65 44
3 44 56 73 2
另一个数据框看起来像
ID A D
1 E 4.3
2 9 E
3 0.8 E
我需要在第一个数据框中排除在第二个数据框中具有 'E' 值的值。例如,应从第一个数据帧中删除 ID 1 列 A 处的值。
d = {'ID': [1, 2, 3], 'A': [10,3,44], 'B': [34,56,56], 'C':[50,65,73], 'D':[87,44,2]}
df1 = pd.DataFrame(data=d)
d2 = {'ID': [1, 2, 3], 'A': ['E',9,0.8], 'D':[4.3,'E','E']}
df2 = pd.DataFrame(data=d2)
假设 ID 为一列,并且您想要屏蔽 df1 中具有相同 ID 和 df2 列中的 E 的值。可以临时设置ID为索引,mask
:
out = (df1
.set_index('ID')
.mask(df2.reindex(columns=df1.columns).set_index('ID').eq('E'))
.reset_index()
)
输出:
ID A B C D
0 1 NaN 34 50 87.0
1 2 3.0 56 65 NaN
2 3 44.0 56 73 NaN