我试图循环遍历数据框列表并为每个数据框附加一个日期时间列。我尝试过以下无效:
dfs = ['nov22_2017', 'nov29_2017', 'dec06_2017','dec13_2017',
'dec20_2017', 'dec27_2017', 'jan03_2018', 'jan10_2018']
sheets = ['11.22.17', '11.29.17', '12.6.17', '12.13',
'12.20', '12.27', '1.3.18', '1.10.18']
dates = ['2017-11-22', '2017-11-29', '2017-1-06', '2017-12-13',
'2017-12-20', '2017-12-27', '2018-01-03', '2018-01-10']
# create a list of datetimes
datetimes = [pd.to_datetime(date) for date in dates]
# assign each df to a variable
dfs = [nrc_xl.parse(sheet, usecols = 10) for sheet in sheets]
# assign datetime columns
for index, df in enumerate(dfs):
df['date'] = datetimes[index]
for循环不会修改列表中的数据帧。如何在不必为每个数据框创建和分配列的情况下以编程方式完成此操作?
编辑:我修好了。sheets = ['11.22.17', '11.29.17', '12.6.17', '12.13',
'12.20', '12.27', '1.3.18', '1.10.18']
# assign dfs to variables
[nov22_2017, nov29_2017, dec06_2017, dec13_2017,
dec20_2017, dec27_2017, jan03_2018, jan10_2018] = [nrc_xl.parse(sheet, usecols = 10) for sheet in sheets]
dfs = [nov22_2017, nov29_2017, dec06_2017, dec13_2017,
dec20_2017, dec27_2017, jan03_2018, jan10_2018]
# create a list of datetimes
dates = ['2017-11-22', '2017-11-29', '2017-1-06', '2017-12-13',
'2017-12-20', '2017-12-27', '2018-01-03', '2018-01-10']
datetimes = [pd.to_datetime(date) for date in dates]
# assign datetime columns
for index, df in enumerate(dfs):
df['date'] = datetimes[index]
答案 0 :(得分:0)
你可以使这部分列表理解:
# assign each df to a variable
dfs = [nrc_xl.parse(sheet, usecols = 10).assign(date=datetimes[i]) \
for i, sheet in enumerate(sheets)]