鱼C论坛

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

我有这么两个DF,要分别列出它们之间不同的项目的不同处

[复制链接]
 楼主| 发表于 2024-4-10 21:46:16 | 显示全部楼层
FishC 发表于 2024-4-10 21:40
非常抱歉,之前的代码还是有问题。根据你提供的数据示例,我们可以使用以下代码来找到车牌不同但日期和 ...

我有两个表,我要删除掉这两个DF中完全相同的行,要怎么弄
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-10 21:46:27 | 显示全部楼层
laiyuanjie 发表于 2024-04-10 21:46
我有两个表,我要删除掉这两个DF中完全相同的行,要怎 ...


要删除DF中完全相同的行,你可以使用pandas库中的drop_duplicates()函数。下面是一种实现方法:

首先,导入pandas库并读取两个DataFrame:
python
import pandas as pd
df1 = pd.read_csv('甲.csv')
df2 = pd.read_csv('乙.csv')
然后,使用drop_duplicates()函数去除两个DataFrame中完全相同的行,并将结果重新赋值给原始变量:
python
df1 = df1.drop_duplicates()
df2 = df2.drop_duplicates()
最后,你可以将这两个DataFrame保存为csv文件或进行其他处理。

希望对你有所帮助!如果还有任何疑问,请随时追问。

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

使用道具 举报

 楼主| 发表于 2024-4-10 21:48:21 | 显示全部楼层
FishC 发表于 2024-4-10 21:46
要删除DF中完全相同的行,你可以使用pandas库中的drop_duplicates()函数。下面是一种实现方法:

首 ...

我的意思是,,我有两个DF,甲和乙,,我要删除甲表中和乙表里面信息相同的那部分,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-10 21:48:31 | 显示全部楼层
laiyuanjie 发表于 2024-04-10 21:48
我的意思是,,我有两个DF,甲和乙,,我要删除甲表中 ...


明白了,你可以使用pandas库中的merge()函数和drop_duplicates()函数来实现这个需求。下面是一种实现方法:

首先,导入pandas库并读取两个DataFrame:
import pandas as pd
df1 = pd.read_csv('甲.csv')
df2 = pd.read_csv('乙.csv')

接下来,使用merge()函数将两个DataFrame按照所有列合并,并设置参数indicator=True来添加一个特殊的"_merge"列,该列指示每行的合并方式:
merged_df = pd.merge(df1, df2, on=list(df1.columns), how='outer', indicator=True)

然后,根据"_merge"列的值筛选出在甲表中和乙表中信息相同的那部分,并使用drop_duplicates()函数去除重复的行:
df_unique = merged_df[merged_df['_merge'] != 'both'].drop_duplicates()

最后,你可以将去重后的结果保存为csv文件或进行其他处理:
df_unique.to_csv('甲表去重.csv', index=False)

希望对你有所帮助!如果还有任何疑问,请随时追问。

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

使用道具 举报

 楼主| 发表于 2024-4-12 14:51:34 | 显示全部楼层
FishC 发表于 2024-4-10 20:27
非常抱歉,我之前的回答中没有显示完整的Python代码。以下是完整的Python代码示例:

如果我是这样的操作顺序,,我先将两个表中完全重叠的部分已经剔除出去了,剩下的部分就有以下几种情况:三个部分其中有两个部分相同的,三个部分只有一个部分相同的,还有完全不相同的,,,

我现在已经把完全相同的剔除了,把三个部分有两个部分相同的也找出来了,,剩下的1和0个相同的要怎么找出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-12 14:51:56 | 显示全部楼层
laiyuanjie 发表于 2024-04-12 14:51
如果我是这样的操作顺序,,我先将两个表中完全重叠的 ...


如果你已经剔除了两个表中完全重叠的部分,并且已经找出了三个部分中有两个部分相同的记录,那么剩下的情况就是只有一个部分相同和完全不相同的记录。你可以按照以下方式找出这两种情况的记录:1、只有一个部分相同的记录:这种情况下,你可以使用pandas的isin()函数来判断哪些记录在其中一个DataFrame中存在,在另一个DataFrame中不存在。例如,如果你想找到只有日期相同的记录,你可以执行以下操作:df_diff_1 = df1[~df1.isin(df2)].dropna()df_diff_1.to_csv('只有一个部分相同的记录.csv', index=False)2、完全不相同的记录:这种情况下,你可以使用pandas的concat()函数将两个DataFrame连接在一起,并且设置参数ignore_index=True以重新索引结果DataFrame。然后,你可以使用drop_duplicates()函数来去除重复的记录。例如:combined_df = pd.concat([df1, df2], ignore_index=True)df_diff_2 = combined_df.drop_duplicates(keep=False)df_diff_2.to_csv('完全不相同的记录.csv', index=False)希望这能帮助到你!如果有任何疑问,请随时提问。

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

使用道具 举报

 楼主| 发表于 2024-4-12 14:52:21 | 显示全部楼层
FishC 发表于 2024-4-12 14:51
如果你已经剔除了两个表中完全重叠的部分,并且已经找出了三个部分中有两个部分相同的记录,那么剩下的 ...

用PYTHON的显示习惯显示
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-12 14:52:30 | 显示全部楼层
laiyuanjie 发表于 2024-04-12 14:52
用PYTHON的显示习惯显示


如果你想在Python中以更好的显示方式展示结果,可以使用print()函数将结果输出到控制台。以下是修改后的代码示例:1、只有一个部分相同的记录:# 只有一个部分相同的记录print("只有一个部分相同的记录:")print(df_diff_1)2、完全不相同的记录:# 完全不相同的记录print("完全不相同的记录:")print(df_diff_2)这样,你就可以在控制台上看到以更好的格式展示的结果了。希望这个解决方案符合你的需求!如果还有其他问题,请随时提问。

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

使用道具 举报

 楼主| 发表于 2024-4-12 14:53:04 | 显示全部楼层
FishC 发表于 2024-4-12 14:51
如果你已经剔除了两个表中完全重叠的部分,并且已经找出了三个部分中有两个部分相同的记录,那么剩下的 ...

你的这段代码用PYTHON的显示习惯显示
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-12 14:53:28 | 显示全部楼层
laiyuanjie 发表于 2024-04-12 14:53
你的这段代码用PYTHON的显示习惯显示


非常抱歉,让我用Python的惯用方式来显示代码给你。
import pandas as pd

# 读取甲、乙两个DataFrame
df1 = pd.read_csv('甲.csv')
df2 = pd.read_csv('乙.csv')

# 找出完全相同的记录并剔除
df_same = pd.merge(df1, df2, on=['日期', '车号', '加油升数'], how='inner')
df_diff = pd.concat([df1, df2]).drop_duplicates(keep=False)

# 找出只有一个部分相同的记录
df_diff_1 = df_diff[df_diff[['日期', '车号']].duplicated(keep=False)]
df_diff_1.to_csv('只有一个部分相同的记录.csv', index=False)

# 找出完全不相同的记录
df_diff_2 = df_diff[df_diff[['日期', '车号']].duplicated(keep=False) == False]
df_diff_2.to_csv('完全不相同的记录.csv', index=False)

这段代码会先找出完全相同的记录并剔除,然后将剩下的记录分成两类:只有一个部分相同的记录和完全不相同的记录。最后将它们分别保存到CSV文件中。

希望这次满足你的要求了!如果还有其他问题,请随时提问。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 15:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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