鱼C论坛

 找回密码
 立即注册
123
返回列表 发新帖
楼主: laiyuanjie

我有两个DF

[复制链接]
 楼主| 发表于 2024-4-12 21:20:29 | 显示全部楼层
按我这个要求来!!!用python的显示习惯显示你的代码

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中完全没有,要显示
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-12 21:20:53 | 显示全部楼层
laiyuanjie 发表于 2024-04-12 21:20
按我这个要求来!!!用python的显示习惯显示你的代码 ...


非常抱歉之前的回答还是没有理解您的需求。以下是根据您的要求编写的修正代码: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_combined = pd.concat([df1, df2], ignore_index=True)# 根据要求筛选出满足条件的行df_filtered = df_combined.groupby(['日期', '车牌']).filter(lambda x: len(x) == 1)# 输出最终结果print(df_filtered)在这个修正后的代码中,首先创建了df1和df2的数据框。然后将df1和df2合并成一个数据框df_combined,使用concat函数并设置ignore_index=True来确保合并后的索引重置。接下来,使用groupby函数和filter方法对日期和车牌进行分组,并筛选出只有一个该组的行。最终得到满足条件的行,并将结果输出。希望这次能满足您的需求。如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-12 21:21:29 | 显示全部楼层
按我这个要求来!!!用python的显示习惯显示你的代码

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中完全没有,要显示

按我这个要求来!!!用python的显示习惯显示你的代码
按我这个要求来!!!用python的显示习惯显示你的代码
按我这个要求来!!!用python的显示习惯显示你的代码
按我这个要求来!!!用python的显示习惯显示你的代码
按我这个要求来!!!用python的显示习惯显示你的代码
按我这个要求来!!!用python的显示习惯显示你的代码
按我这个要求来!!!用python的显示习惯显示你的代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-12 21:21:49 | 显示全部楼层
laiyuanjie 发表于 2024-04-12 21:21
按我这个要求来!!!用python的显示习惯显示你的代码 ...


非常抱歉之前的回答还是没有理解您的需求。以下是根据您的要求编写的修正代码,按照Python的显示习惯进行展示:import pandas as pd# 创建df1和df2数据框df1 = pd.DataFrame({'日期': ,                     '车牌': ,                     '加油升数': })df2 = pd.DataFrame({'日期': ,                     '车牌': ,                     '加油升数': })# 找出满足条件的行df_result = pd.DataFrame(columns=['日期', '车牌', '加油升数'])for index, row in df1.iterrows():    if ((df1['日期'].iloc[index] in df2['日期'].values and         df1['车牌'].iloc[index] in df2['车牌'].values) or        (df1['日期'].iloc[index] in df2['日期'].values and         df1['加油升数'].iloc[index] in df2['加油升数'].values) or        (df1['车牌'].iloc[index] in df2['车牌'].values and         df1['加油升数'].iloc[index] in df2['加油升数'].values)):        continue    else:        df_result = df_result.append(row)for index, row in df2.iterrows():    if ((df2['日期'].iloc[index] in df1['日期'].values and         df2['车牌'].iloc[index] in df1['车牌'].values) or        (df2['日期'].iloc[index] in df1['日期'].values and         df2['加油升数'].iloc[index] in df1['加油升数'].values) or        (df2['车牌'].iloc[index] in df1['车牌'].values and         df2['加油升数'].iloc[index] in df1['加油升数'].values)):        continue    else:        df_result = df_result.append(row)# 重新设置索引df_result.reset_index(drop=True, inplace=True)# 打印结果print("剩下的数据框:")print(df_result)希望这次能满足您的要求。如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-12 21:22:49 | 显示全部楼层
请用python的显示习惯显示你的代码!!!听到没有,,,
请用python的显示习惯显示你的代码!!!听到没有,,,
请用python的显示习惯显示你的代码!!!听到没有,,,
请用python的显示习惯显示你的代码!!!听到没有,,,
请用python的显示习惯显示你的代码!!!听到没有,,,

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中完全没有,要显示

按我这个要求来!!!用python的显示习惯显示你的代码
按我这个要求来!!!用python的显示习惯显示你的代码
按我这个要求来!!!用python的显示习惯显示你的代码
按我这个要求来!!!用python的显示习惯显示你的代码
按我这个要求来!!!用python的显示习惯显示你的代码
按我这个要求来!!!用python的显示习惯显示你的代码
按我这个要求来!!!用python的显示习惯显示你的代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-12 21:23:13 | 显示全部楼层
laiyuanjie 发表于 2024-04-12 21:22
请用python的显示习惯显示你的代码!!!听到没有,, ...


非常抱歉之前的回答还是没有满足您的要求。以下是修正后的代码,使用Python的显示习惯进行展示:
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)
在这个修正后的代码中,我们首先使用pandas的merge函数找出df1和df2中有重复的行,并保存到df_duplicate中。然后我们使用concat函数将df1和df2合并,并使用drop_duplicates函数去除重复的行,得到剩下的行保存到df_not_equal中。最后,使用duplicated函数和~操作符筛选出没有在df_duplicate中的行并保存到df_result中,即按照您的要求得到的数据框。希望这次能满足您的需求。如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-12 21:28:25 | 显示全部楼层
FishC 发表于 2024-4-12 21:23
非常抱歉之前的回答还是没有满足您的要求。以下是修正后的代码,使用Python的显示习惯进行展示:在这个 ...

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中完全没有,要显示
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-12 21:28:41 | 显示全部楼层
laiyuanjie 发表于 2024-04-12 21:28
df1

日期   车牌  加油升数  
4-1     5       10 ...


非常抱歉之前的回答仍然没有满足您的要求。下面是修改后的代码,按照您的要求生成所需的数据框: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]})# 根据日期、车牌和加油升数进行合并,并标记重复行df_merged = pd.merge(df1, df2, on=['日期', '车牌', '加油升数'], how='outer', indicator=True)# 根据条件筛选出符合要求的行df_result = df_merged[df_merged['_merge'] == 'left_only'][['日期', '车牌', '加油升数']]print("按要求得到的数据框:")print(df_result)这次的代码会根据日期、车牌和加油升数三个列进行合并,并通过添加一个"_merge"列标记是否重复。然后,我们根据"_merge"列的值筛选出df_merged中只在df1中出现的行,保存到df_result中。最后,我们打印出按要求得到的数据框df_result。希望这次能够满足您的需求。如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 14:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表