鱼C论坛

 找回密码
 立即注册
查看: 548|回复: 5

python处理Excel

[复制链接]
发表于 2024-7-1 18:26:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
对多个Excel表删除含有某一字段的行然后分别生成新表
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-7-1 18:29:57 | 显示全部楼层
嗨,鱼油!听起来你要跟Excel来一场“说删就删”的大动作啊!没问题,我们用Python轻松搞定。你需要的是 `pandas` 这个宝藏库,绝对是处理Excel的神兵利器。

我们来一步步解决吧:

1. **安装pandas**:
   如果还没有安装pandas,那就先装上它。打开终端,输入:
  
  1. pip install pandas
复制代码

   
2. **导入pandas和其他需要的模块**:
  
  1. import pandas as pd
  2.    import glob
  3.    import os
复制代码


3. **读取多个Excel文件**:
   假设你的Excel文件们都在一个文件夹里,我们用 `glob` 模块来读取它们。
  
  1. folder_path = 'your_folder_path'  # 换成你的文件夹路径
  2.    excel_files = glob.glob(os.path.join(folder_path, '*.xlsx'))
复制代码


4. **处理每个Excel并删除含有某字段的行**:
   比如我们要删除包含字段`"bad_column"`行。关键代码如下:
  
  1. for file in excel_files:
  2.        df = pd.read_excel(file)  # 读取Excel到DataFrame
  3.       
  4.        if "bad_column" in df.columns:  # 如果列里有这个字段
  5.            df = df[df["bad_column"].isna()]  # 删除包含字段"bad_column"的行
  6.       
  7.        new_file_name = f'new_{os.path.basename(file)}'
  8.        new_file_path = os.path.join(folder_path, new_file_name)
  9.        df.to_excel(new_file_path, index=False)  # 保存新的Excel文件
  10.        print(f'{new_file_name} 生成好了,成功删除了"bad_column"的行!')
复制代码


总结一下:
- 我们使用 `glob` 找到所有Excel文件。
- 使用 `pandas` 读取每一个文件并检查是否包含目标字段。
- 如果包含该字段,就删除相关行。
- 生成一个新文件并保存下来。

这样,你就愉快地完成了任务,是不是很简单呢?记得替换掉你的具体字段名和文件名哦!

希望这能帮到你,祝你和Excel愉快相处!如果还有其他问题,随时来问嘿~

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-7-1 18:31:06 | 显示全部楼层
FishC 发表于 2024-7-1 18:29
嗨,鱼油!听起来你要跟Excel来一场“说删就删”的大动作啊!没问题,我们用Python轻松搞定。你需要的是 `p ...

excel在不同的文件里面
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-1 18:32:04 | 显示全部楼层
pallas 发表于 2024-07-01 18:31
excel在不同的文件里面


了解了,如果你的Excel文件们分散在不同的文件夹中,其实我们也可以通过适当地调整代码来处理。比如,你可以创建一个列表,里面包含所有Excel文件的路径,然后遍历这个列表。让我们看看详细的步骤:

  1. import pandas as pd
  2. import os

  3. # 创建一个列表,包含所有Excel文件的路径
  4. excel_files = ['folder1/your_file1.xlsx', 'folder2/your_file2.xlsx', ...]  # 把你的文件路径填进去

  5. # 处理每个Excel并删除含有某字段的行
  6. for file in excel_files:
  7.     df = pd.read_excel(file)  # 读取Excel到DataFrame
  8.    
  9.     if "bad_column" in df.columns:  # 如果列里有这个字段
  10.         df = df[df["bad_column"].isna()]  # 删除包含字段"bad_column"的行
  11.    
  12.     new_file_name = f'new_{os.path.basename(file)}'
  13.     new_file_path = os.path.dirname(file) + '/' + new_file_name
  14.     df.to_excel(new_file_path, index=False)  # 保存新的Excel文件
  15.     print(f'{new_file_name} 生成好了,成功删除了"bad_column"的行!')
复制代码


与之前的区别在于:
- 我们直接创建了一个列表,里面全是Excel文件的路径,就像这样:`['folder1/your_file1.xlsx', 'folder2/your_file2.xlsx', ...]`。
- 我们使用 `os.path.dirname(file)` 获取每个Excel文件的父目录,然后再添加上新的文件名来创建新的文件路径。

希望这个解答能帮到你!如果还有其他问题,欢迎随时提问哦~

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-7-2 09:28:39 | 显示全部楼层
python输入两个日期计算其相差的天数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-2 09:28:47 | 显示全部楼层
pallas 发表于 2024-07-02 09:28
python输入两个日期计算其相差的天数


哈喽,鱼油!计算两个日期之间相差的天数这事儿,Python 绝对是游刃有余。我们可以用 `datetime` 模块来搞定,简单又高效。上代码:

  1. from datetime import datetime

  2. def calculate_days_between_dates(date1_str, date2_str, date_format='%Y-%m-%d'):
  3.     """
  4.     计算两个日期字符串之间相差的天数
  5.    
  6.     :param date1_str: 第一个日期字符串
  7.     :param date2_str: 第二个日期字符串
  8.     :param date_format: 日期字符串的格式,默认为 '%Y-%m-%d'
  9.     :return: 相差的天数
  10.     """
  11.     # 将日期字符串转换为 datetime 对象
  12.     date1 = datetime.strptime(date1_str, date_format)
  13.     date2 = datetime.strptime(date2_str, date_format)
  14.    
  15.     # 计算日期差
  16.     delta = abs((date2 - date1).days)
  17.    
  18.     return delta

  19. # 使用示例
  20. date1 = '2023-01-01'
  21. date2 = '2023-10-15'
  22. days_difference = calculate_days_between_dates(date1, date2)
  23. print(f'{date1} 和 {date2} 相差 {days_difference} 天')
复制代码


解释一下这个代码:
1. **导入模块**:我们用到了 `datetime` 模块。这个模块里有个叫 `strptime` 的方法可以把字符串转成日期对象。
2. **函数定义**:函数 `calculate_days_between_dates` 接受两个日期字符串和一个日期格式(默认是 `'%Y-%m-%d'`)。
3. **字符串转日期对象**:用 `strptime` 方法把参数里的日期字符串转换成 `datetime` 对象。
4. **计算差值**:直接用减法计算日期差,会得到一个 `timedelta` 对象,然后取 `.days` 属性得到差值的天数。为了保险起见,使用了 `abs` 函数来确保差值是正数。
5. **使用示例**:最后,我们给出两个日期示例,调用函数并打印结果。

哇塞,这么一来你就能轻松算出两个日期间相差多少天啦!注意,日期格式要跟你输入的格式一致哦,不然会出错的。如果你还有其他问题或需要不同的日期格式,随时告诉我哈~

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-22 06:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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