如何将嵌套列表转换为Pandas DataFrame?
优化实现方案与DataFrame构建
首先,咱们可以把日期输入和文件名的对应关系处理得更清晰,同时更高效地构建你想要的Pandas DataFrame。
步骤1:优化用户输入逻辑
你当前的列表推导式已经能获取日期,但可以把输入和文件名的绑定做得更直观,同时避免后续的追加操作。比如用zip思路,直接在输入过程中就完成日期与文件名的配对:
import pandas as pd # 假设你的文件名列表已提前定义 filenames = ['File_2016.csv', 'File_2017.csv', 'File_2018.csv'] # 同步获取日期输入并与文件名配对 date_file_pairs = [ (input(f'Enter the date for {filename}: '), filename) for filename in filenames ]
这样直接得到的是(日期, 文件名)的元组列表,比先单独存日期再追加文件名的逻辑更连贯,也更简洁。
步骤2:快速构建目标DataFrame
有了配对好的元组列表,咱们可以直接传入pd.DataFrame,指定列名就能得到你想要的结构:
df = pd.DataFrame(date_file_pairs, columns=['Date', 'File'])
最终生成的DataFrame结构如下:
| Date | File |
|---|---|
| 2016-01-05 | File_2016.csv |
| 2017-02-03 | File_2017.csv |
| 2018-01-25 | File_2018.csv |
可选优化:日期格式验证
如果想避免用户输入不符合格式的日期,还可以加个简单的验证逻辑,让数据更可靠:
from datetime import datetime def check_date_format(input_date): try: datetime.strptime(input_date, '%Y-%m-%d') return True except ValueError: print("Invalid format! Please use YYYY-MM-DD.") return False date_file_pairs = [] for filename in filenames: while True: input_date = input(f'Enter the date for {filename}: ') if check_date_format(input_date): date_file_pairs.append((input_date, filename)) break
这个小改动能确保输入的日期格式符合要求,避免后续DataFrame处理出现异常。
内容的提问来源于stack exchange,提问作者Julia
相关产品推荐
相关产品推荐

