将文件夹中所有txt都转换为csv,txt中数据以空格分隔,有4列,分别为年月日、时刻、降水量、流量。生成的csv中要合并同一天的数据,并为三列,分别问日期、降水量、流量
时间: 2024-04-30 18:24:14 浏览: 84
以下是Python代码实现:
```python
import os
import pandas as pd
# 遍历文件夹中的所有txt文件
for file in os.listdir('./'):
if file.endswith('.txt'): # 只处理txt文件
df = pd.read_csv(file, delim_whitespace=True, names=['日期', '时刻', '降水量', '流量'])
df['日期'] = pd.to_datetime(df['日期'] + ' ' + df['时刻'], format='%Y%m%d %H:%M')
df = df.drop(columns=['时刻'])
df = df.groupby(df['日期'].dt.date).agg({'降水量': 'sum', '流量': 'sum'}).reset_index()
df.to_csv(file[:-4] + '.csv', index=False, columns=['日期', '降水量', '流量'])
```
解释一下代码:
- `os.listdir('./')` 用于获取当前文件夹中的所有文件和文件夹。
- `if file.endswith('.txt')` 用于只处理txt文件,跳过其他文件和文件夹。
- `pd.read_csv(file, delim_whitespace=True, names=['日期', '时刻', '降水量', '流量'])` 用于读取txt文件中的数据,空格分隔,列名分别为日期、时刻、降水量、流量。
- `pd.to_datetime(df['日期'] + ' ' + df['时刻'], format='%Y%m%d %H:%M')` 用于将日期和时刻拼接成日期时间格式。
- `df = df.drop(columns=['时刻'])` 用于删除时刻列。
- `df.groupby(df['日期'].dt.date).agg({'降水量': 'sum', '流量': 'sum'}).reset_index()` 用于按天分组,计算该天的降水量和流量之和,并重置索引。
- `df.to_csv(file[:-4] + '.csv', index=False, columns=['日期', '降水量', '流量'])` 用于保存为csv文件,文件名和原来txt文件相同,只是后缀名改为csv,并只保留日期、降水量和流量三列。
阅读全文