gpt4 book ai didi

python - Pandas : Copy recent date's data for missing days

转载 作者:行者123 更新时间:2023-12-01 09:31:41 25 4
gpt4 key购买 nike

我在 pandas Dataframe 中有一些以下格式的数据,其中索引是数据。这是可能缺少特定日期数据的财务数据。我需要用最近日期(感兴趣的日期之前)的数据填写缺失日期的数据。另外,我只需要填写工作日。我如何在 Pandas 中实现这一点?一种简单的方法是迭代每一行(按日期顺序),同时保留最新的数据并复制到新的数据帧中。如果缺少日期,可以复制最新的可用数据。有更好的选择吗?

               Open    Close     High      Low    WeekDay
Date
2018-03-12 1449.80 1433.60 1450.00 1423.60 Monday
2018-03-13 1438.60 1410.80 1439.85 1402.00 Tuesday
2018-03-14 1413.00 1390.25 1413.00 1381.00 Wednesday
2018-03-19 1340.00 1317.30 1345.00 1310.00 Monday
2018-03-20 1319.90 1304.70 1326.00 1297.00 Tuesday
2018-03-21 1314.80 1297.00 1314.80 1293.10 Wednesday
2018-03-22 1309.50 1289.80 1313.95 1275.00 Thursday
2018-03-23 1276.00 1277.90 1288.80 1270.00 Friday
2018-03-27 1285.55 1274.95 1309.95 1267.25 Tuesday
2018-03-28 1284.50 1294.65 1300.00 1273.00 Wednesday
2018-04-03 1300.00 1283.15 1300.05 1277.20 Tuesday
2018-04-04 1294.90 1271.35 1300.00 1267.55 Wednesday

最佳答案

使用resampleffill对于没有 WeekDay 的所有列,最后通过 DatetimeIndex.weekday_name 添加此列:

(以下解决方案是填写所有缺失的日子,包括周末)

cols = df.columns.difference(['WeekDay'])
df = df[cols].resample('D').ffill()
df['WeekDay'] = df.index.weekday_name

print (df)
Open Close High Low WeekDay
Date
2018-03-12 1449.80 1433.60 1450.00 1423.60 Monday
2018-03-13 1438.60 1410.80 1439.85 1402.00 Tuesday
2018-03-14 1413.00 1390.25 1413.00 1381.00 Wednesday
2018-03-15 1413.00 1390.25 1413.00 1381.00 Thursday
2018-03-16 1413.00 1390.25 1413.00 1381.00 Friday
2018-03-17 1413.00 1390.25 1413.00 1381.00 Saturday
2018-03-18 1413.00 1390.25 1413.00 1381.00 Sunday
2018-03-19 1340.00 1317.30 1345.00 1310.00 Monday
2018-03-20 1319.90 1304.70 1326.00 1297.00 Tuesday
2018-03-21 1314.80 1297.00 1314.80 1293.10 Wednesday
2018-03-22 1309.50 1289.80 1313.95 1275.00 Thursday
2018-03-23 1276.00 1277.90 1288.80 1270.00 Friday
2018-03-24 1276.00 1277.90 1288.80 1270.00 Saturday
2018-03-25 1276.00 1277.90 1288.80 1270.00 Sunday
2018-03-26 1276.00 1277.90 1288.80 1270.00 Monday
2018-03-27 1285.55 1274.95 1309.95 1267.25 Tuesday
2018-03-28 1284.50 1294.65 1300.00 1273.00 Wednesday
2018-03-29 1284.50 1294.65 1300.00 1273.00 Thursday
2018-03-30 1284.50 1294.65 1300.00 1273.00 Friday
2018-03-31 1284.50 1294.65 1300.00 1273.00 Saturday
2018-04-01 1284.50 1294.65 1300.00 1273.00 Sunday
2018-04-02 1284.50 1294.65 1300.00 1273.00 Monday
2018-04-03 1300.00 1283.15 1300.05 1277.20 Tuesday
2018-04-04 1294.90 1271.35 1300.00 1267.55 Wednesday

编辑:

(以下解决方案仅限制工作日的填充过程)

cols = df.columns.difference(['WeekDay'])
df = df[cols].resample('D').ffill()
df['WeekDay'] = df.index.weekday_name
df = df[~df['WeekDay'].isin(['Saturday','Sunday'])]
print (df)
Close High Low Open WeekDay
Date
2018-03-12 1433.60 1450.00 1423.60 1449.80 Monday
2018-03-13 1410.80 1439.85 1402.00 1438.60 Tuesday
2018-03-14 1390.25 1413.00 1381.00 1413.00 Wednesday
2018-03-15 1390.25 1413.00 1381.00 1413.00 Thursday
2018-03-16 1390.25 1413.00 1381.00 1413.00 Friday
2018-03-19 1317.30 1345.00 1310.00 1340.00 Monday
2018-03-20 1304.70 1326.00 1297.00 1319.90 Tuesday
2018-03-21 1297.00 1314.80 1293.10 1314.80 Wednesday
2018-03-22 1289.80 1313.95 1275.00 1309.50 Thursday
2018-03-23 1277.90 1288.80 1270.00 1276.00 Friday
2018-03-26 1277.90 1288.80 1270.00 1276.00 Monday
2018-03-27 1274.95 1309.95 1267.25 1285.55 Tuesday
2018-03-28 1294.65 1300.00 1273.00 1284.50 Wednesday
2018-03-29 1294.65 1300.00 1273.00 1284.50 Thursday
2018-03-30 1294.65 1300.00 1273.00 1284.50 Friday
2018-04-02 1294.65 1300.00 1273.00 1284.50 Monday
2018-04-03 1283.15 1300.05 1277.20 1300.00 Tuesday
2018-04-04 1271.35 1300.00 1267.55 1294.90 Wednesday

关于python - Pandas : Copy recent date's data for missing days,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49913241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com