我有一个csv文件,它有多列,其中一列名为“dates”。在“dates”中包含一些日期,有些行的日期比其他行多。下面是一个文件中日期的示例:
dates
31-Mar-24
Nov 21, 2024, Apr 14, 2025, May 18, 2025
21-Oct-23
26-Sep-24
22-Nov-23
24-Sep-24
13-Nov-23
10-Apr-24
23-Sep-23
Apr 16, 2025, Jun 04, 2025
我希望将日期分隔到各自的列中。如果您使用我前面的示例,其中一行的数据为“Nov 21,2024,Apr 14,2025,May 18,2025”。我希望它在输出中看起来像这样:
date date2: date3:
nov 1, 2024 Apr 14, 2025 you get it right
以此类推,你就明白了,我希望所有包含多个日期的列都被放到另一列中,但必须在同一行中。
以下是我尝试过的代码,但它不起作用:
import csv
with open('input.csv', 'r') as csv_input_file, open('output.csv', 'w', newline='') as csv_output_file:
reader = csv.reader(csv_input_file)
writer = csv.writer(csv_output_file)
header = next(reader)
new_columns = []
for column in header:
if column == 'dates':
new_columns.extend(['date' + str(i+1) for i in range(10)]) # maximum of 10 date columns
else:
new_columns.append(column)
writer.writerow(new_columns)
for row in reader:
dates_str = row[header.index('dates')]
dates_list = dates_str.split(',')
dates_list = [date.strip() for date in dates_list]
new_row = []
for column in row:
if column == dates_str:
new_row.extend(dates_list)
new_row.extend([''] * (len(new_columns) - len(new_row)))
else:
new_row.append(column)
writer.writerow(new_row)
这是我目前的代码,但问题是,它是分裂的日期在每一个逗号,使年被分裂从月和天到所有新的列。Cant似乎找到一个解决方案,并希望有人在这里可以帮助。
2条答案
按热度按时间jhdbpxl91#
使用正则表达式分割日期,这将防止在日期字符串中使用逗号分割。
xdnvmnnf2#
使用pandas,您可以尝试以下操作:
输出: