|

楼主 |
发表于 2024-4-12 21:28:25
|
显示全部楼层
df1
日期 车牌 加油升数
4-1 5 100
4-2 6 70
4-3 7 80
4-5 8 90
4-6 9 100
4-6 10 101
4-8 5 100
4-9 8 90
4-10 20 50
df2
日期 车牌 加油升数
4-1 5 100
4-3 6 70
4-3 6 60
4-4 8 90
4-6 11 100
4-6 10 101
4-7 5 120
4-19 6 90
4-11 20 60
4-12 30 20
————————————
我要的是得出这样的一个df:
日期 车牌 加油升数
4-3 7 80 df1和df2有1项相同,要显示
4-8 5 100 df2中完全没有,要显示
4-9 8 90 df1和df2有1项相同,要显示
4-10 20 50 df1和df2有1项相同,要显示
4-12 30 20 df1中完全没有,要显示
你之前给我的代码是让我这样输入:
import pandas as pd
# 创建df1和df2数据框
df1 = pd.DataFrame({'日期': ['4-1', '4-2', '4-3', '4-5', '4-6', '4-6', '4-8', '4-9', '4-10'],
'车牌': ['5', '6', '7', '8', '9', '10', '5', '8', '20'],
'加油升数': [100, 70, 80, 90, 100, 101, 100, 90, 50]})
df2 = pd.DataFrame({'日期': ['4-1', '4-3', '4-3', '4-4', '4-6', '4-6', '4-7', '4-19', '4-11', '4-12'],
'车牌': ['5', '6', '6', '8', '11', '10', '5', '6', '20', '30'],
'加油升数': [100, 70, 60, 90, 100, 101, 120, 90, 60, 20]})
# 找出df1和df2中有重复的行
df_duplicate = pd.merge(df1, df2, on=['日期', '车牌', '加油升数'], how='inner')
# 剔除重复的行
df_not_equal = pd.concat([df1, df2]).drop_duplicates(keep=False)
# 剔除在df_duplicate中的行
df_result = df_not_equal[~df_not_equal.duplicated(subset=['日期', '车牌', '加油升数'], keep=False)]
print("按要求得到的数据框:")
print(df_result)
日期 车牌 加油升数
1 4-2 6 70
2 4-3 7 80
3 4-5 8 90
4 4-6 9 100
6 4-8 5 100
7 4-9 8 90
8 4-10 20 50
1 4-3 6 70
2 4-3 6 60
3 4-4 8 90
4 4-6 11 100
6 4-7 5 120
7 4-19 6 90
8 4-11 20 60
9 4-12 30 20
这个是我根据你的代码得出来的df,,
根本就不是我要的下面的这个!!!!
日期 车牌 加油升数
4-3 7 80 df1和df2有1项相同,要显示
4-8 5 100 df2中完全没有,要显示
4-9 8 90 df1和df2有1项相同,要显示
4-10 20 50 df1和df2有1项相同,要显示
4-12 30 20 df1中完全没有,要显示 |
|