gpt4 book ai didi

python - 对所有列中缺失日期和前向填充值的行重新采样,但一列除外

转载 作者:太空宇宙 更新时间:2023-11-04 02:29:24 26 4
gpt4 key购买 nike

我目前有以下示例数据框:

No  FlNo    DATE        Loc    Type
20 1826 6/1/2017 AAA O
20 1112 6/4/2017 BBB O
20 1234 6/6/2017 CCC O
20 43 6/7/2017 DDD O
20 1840 6/8/2017 EEE O

我想在彼此的顶部填写两行缺失的日期。我还想用顶行中的值填充非日期列的值,但将“类型”列留空以填充行。

请查看所需的输出:

No  FlNo    DATE        Loc    Type 
20 1826 6/1/2017 AAA O
20 1826 6/2/2017 AAA
20 1826 6/3/2017 AAA
20 1112 6/4/2017 BBB O
20 1112 6/5/2017 BBB
20 1234 6/6/2017 CCC O
20 43 6/7/2017 DDD O
20 1840 6/8/2017 EEE O

我在 Google 和 stackoverflow 周围进行了搜索,但没有找到任何日期填写 pandas 数据框的答案。

最佳答案

首先,使用 pd.to_datetimeDATE 转换为 datetime 列,

df.DATE = pd.to_datetime(df.DATE)

选项 1
使用resample + ffill,稍后再重置Type列。首先,将唯一日期存储在某个列表中:

dates = df.DATE.unique()

现在,

df = df.set_index('DATE').resample('1D').ffill().reset_index()
df.Type = df.Type.where(df.DATE.isin(dates), '')

df

DATE No FlNo Loc Type
0 2017-06-01 20 1826 AAA O
1 2017-06-02 20 1826 AAA
2 2017-06-03 20 1826 AAA
3 2017-06-04 20 1112 BBB O
4 2017-06-05 20 1112 BBB
5 2017-06-06 20 1234 CCC O
6 2017-06-07 20 43 DDD O
7 2017-06-08 20 1840 EEE O

如果需要,您可以将 DATE 恢复到原来的状态;

df.DATE = df.DATE.dt.strftime('%m/%d/%Y')

选项 2
另一种选择是 asfreq + ffill + fillna:

df = df.set_index('DATE').asfreq('1D').reset_index()
c = df.columns.difference(['Type'])
df[c] = df[c].ffill()
df['Type'] = df['Type'].fillna('')

df
DATE No FlNo Loc Type
0 2017-06-01 20.0 1826.0 AAA O
1 2017-06-02 20.0 1826.0 AAA
2 2017-06-03 20.0 1826.0 AAA
3 2017-06-04 20.0 1112.0 BBB O
4 2017-06-05 20.0 1112.0 BBB
5 2017-06-06 20.0 1234.0 CCC O
6 2017-06-07 20.0 43.0 DDD O
7 2017-06-08 20.0 1840.0 EEE O

关于python - 对所有列中缺失日期和前向填充值的行重新采样,但一列除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49565400/

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