[英]Python Dataframe : Update the values of a column in a dataframe based on another dataframe
[英]How to filter a dataframe based on the values of another dataframe in python
数据框1
DF1:
H Code Parent Days Product Facility Area A B C D E F G H I J K
D 620LAKEV Samsung 0 Phone 0 0 0 0 0 0 0 0 0
D 620LAKEV Samsung 13 Phone 6916.1 0 6916.1 6916.1 0 6916.1 6916.1 0 6916.1
D 620LAKEV Samsung 14 Phone 6916.1 0 6916.1 6916.1 0 6916.1 6916.1 0 6916.1
D 620LAKEV Samsung 92 Phone 20597.91 0 20597.91 20597.91 0 20597.91 20597.91 0 20597.91
D 620LAKEV Samsung 184 Phone 25164.01 0 25164.01 25164.01 0 25164.01 25164.01 0 25164.01
D 620LAKEV Samsung 365 Phone 30276.4 0 30276.4 30276.4 0 30276.4 30276.4 0 30276.4
D 620LAKEV Samsung 1096 Phone 29975.58 0 29975.58 29975.58 0 29975.58 29975.58 0 29975.58
D 1011BC Apple 0 Phone 0 0 0 0 0 0 0 0 0
D 1011BC Apple 13 Phone 0 0 0 0 0 0 0 0 0
D 1011BC Apple 14 Phone 0 0 0 0 0 0 0 0 0
D 1011BC Apple 92 Phone 0 0 0 0 0 0 0 0 0
D 1011BC Apple 184 Phone 0 0 0 0 0 0 0 0 0
D 1011BC Apple 365 Phone 611318.5 0 611318.5 611318.5 0 611318.5 611318.5 0 611318.5
D 1011BC Apple 1096 Phone 2341752.75 0 2341752.75 2341752.75 0 2341752.75 2341752.75 0 2341752.75
D 1011BC Apple 0 Phone 1607774 0 0 0 0 0 0 0 0 0
D 1011BC Apple 13 Phone 1607774 0 0 0 0 0 0 0 0 0
D 1011BC Apple 14 Phone 1607774 0 0 0 0 0 0 0 0 0
D 1011BC Apple 92 Phone 1607774 0 0 0 0 0 0 0 0 0
D 1011BC Apple 184 Phone 1607774 0 0 0 0 0 0 0 0 0
D 1011BC Apple 365 Phone 1607774 611318.5 0 611318.5 611318.5 0 611318.5 611318.5 0 611318.5
D 1011BC Apple 1096 Phone 1607774 2341752.75 0 2341752.75 2341752.75 0 2341752.75 2341752.75 0 2341752.75
D 1012SAS Apple 0 Phone 1572904 0 0 0 0 0 0 0 0 0
D 1012SAS Apple 13 Phone 1572904 0 0 0 0 0 0 0 0 0
D 1012SAS Apple 14 Phone 1572904 0 0 0 0 0 0 0 0 0
D 1012SAS Apple 92 Phone 1572904 34894.82 0 34894.82 34894.82 0 34894.82 34894.82 0 34894.82
D 1012SAS Apple 184 Phone 1572904 87095.26 0 87095.26 87095.26 0 87095.26 87095.26 0 87095.26
D 1012SAS Apple 365 Phone 1572904 128485.89 0 128485.89 128485.89 0 128485.89 128485.89 0 128485.89
D 1012SAS Apple 1096 Phone 1572904 141775.97 0 141775.97 141775.97 0 141775.97 141775.97 0 141775.97
数据框2:
DF2:
H Code Parent Days Product Facility Area
D 4AAK27778 Samsung 0 Phone
D 4AAK27778 Samsung 13 Phone
D 4AAK27778 Samsung 14 Phone
D 4AAK27778 Samsung 92 Phone
D 4AAK27778 Samsung 184 Phone
D 4AAK27778 Samsung 365 Phone
D 4AAK27778 Samsung 1096 Phone
D 3G251866 Samsung 0 Phone
D 3G251866 Samsung 13 Phone
D 3G251866 Samsung 14 Phone
D 3G251866 Samsung 92 Phone
D 3G251866 Samsung 184 Phone
D 3G251866 Samsung 365 Phone
D 3G251866 Samsung 1096 Phone
D 3W809327 Samsung 0 Phone
D 3W809327 Samsung 13 Phone
D 3W809327 Samsung 14 Phone
D 3W809327 Samsung 92 Phone
D 3W809327 Samsung 184 Phone
D 3W809327 Samsung 365 Phone
D 3W809327 Samsung 1096 Phone
D 620LAKEV Samsung 0 Phone
D 620LAKEV Samsung 13 Phone
D 620LAKEV Samsung 14 Phone
D 620LAKEV Samsung 92 Phone
D 620LAKEV Samsung 184 Phone
D 620LAKEV Samsung 365 Phone
D 620LAKEV Samsung 1096 Phone
预期 Output:
H Code Parent Days Product Facility Area A B C D E F G H I J K
D 620LAKEV Samsung 0 Phone 0 0 0 0 0 0 0 0 0
D 620LAKEV Samsung 13 Phone 6916.1 0 6916.1 6916.1 0 6916.1 6916.1 0 6916.1
D 620LAKEV Samsung 14 Phone 6916.1 0 6916.1 6916.1 0 6916.1 6916.1 0 6916.1
D 620LAKEV Samsung 92 Phone 20597.91 0 20597.91 20597.91 0 20597.91 20597.91 0 20597.91
D 620LAKEV Samsung 184 Phone 25164.01 0 25164.01 25164.01 0 25164.01 25164.01 0 25164.01
D 620LAKEV Samsung 365 Phone 30276.4 0 30276.4 30276.4 0 30276.4 30276.4 0 30276.4
D 620LAKEV Samsung 1096 Phone 29975.58 0 29975.58 29975.58 0 29975.58 29975.58 0 29975.58
[![在此处输入图像描述][1]][1]
[![在此处输入图像描述][2]][2]
[![在此处输入图像描述][3]][3]
数据框1 [1]: https://i.stack.imgur.com/PPjsM.png
数据帧2:[2]: https://i.stack.imgur.com/8OQxl.png
预期 Output:[3]: https://i.stack.imgur.com/KPwrh.png
在 Dataframe1 中,Column AREA、J 和 K 为空,而在 datafarme2 中,Column Facility 和 Area 为空
我想根据 Dataframe2 中的值过滤 Dataframe1,我尝试了下面的代码但它不起作用,我不确定是什么问题,请你帮我过滤 dataframe1 数据。
keys = list(df2.columns.values)
i1 = df1.set_index(keys).index
i2 = df1.set_index(keys).index
filtered_df=df1[~i1.isin(i2)]
print(filtered_df)
您可以merge
非空列:
# select non-empty columns from df2
cols2 = list(df2.dropna(how='all', axis=1))
# remove df2's empty columns from df1
cols1 = df1.columns.difference(df2.columns.difference(cols2))
out = df2.merge(df1[cols1], on=cols2).to_string()
output:
H Code Parent Days Product Facility Area A B C D E F G H.1 I J K
0 D 620LAKEV Samsung 0 Phone NaN NaN 0.00 0.00 0.0 0.00 0.00 0.0 0.00 NaN NaN NaN NaN
1 D 620LAKEV Samsung 13 Phone NaN NaN 6916.10 6916.10 0.0 6916.10 6916.10 0.0 6916.10 NaN NaN NaN NaN
2 D 620LAKEV Samsung 14 Phone NaN NaN 6916.10 6916.10 0.0 6916.10 6916.10 0.0 6916.10 NaN NaN NaN NaN
3 D 620LAKEV Samsung 92 Phone NaN NaN 20597.91 20597.91 0.0 20597.91 20597.91 0.0 20597.91 NaN NaN NaN NaN
4 D 620LAKEV Samsung 184 Phone NaN NaN 25164.01 25164.01 0.0 25164.01 25164.01 0.0 25164.01 NaN NaN NaN NaN
5 D 620LAKEV Samsung 365 Phone NaN NaN 30276.40 30276.40 0.0 30276.40 30276.40 0.0 30276.40 NaN NaN NaN NaN
6 D 620LAKEV Samsung 1096 Phone NaN NaN 29975.58 29975.58 0.0 29975.58 29975.58 0.0 29975.58 NaN NaN NaN NaN
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.