将日期时间列添加到Pandas中的多个数据帧

问题描述 投票:0回答:1

我正在尝试循环遍历数据框列表并为每个数据框附加一个datetime列。我试过以下无济于事:

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]
python pandas dataframe
1个回答
0
投票

你可以使这部分列表理解:

# assign each df to a variable
dfs = [nrc_xl.parse(sheet, usecols = 10).assign(date=datetimes[i]) \
       for i, sheet in enumerate(sheets)]
© www.soinside.com 2019 - 2024. All rights reserved.