[英]pandas reindex method='pad' not working as expected with MultiIndex
我想重新索引兩列(字符串和日期時間64)的多索引。 但是,方法板並沒有像我預期的那樣工作。
我的代碼如下:
df = pd.read_csv('./Artikelstatus.csv',
sep=';',
parse_dates=['VON_DTM'],
infer_datetime_format=True,
usecols=['Artikel','ATTRIBUT','VON_DTM'],
dtype={'Artikel': 'str', 'ATTRIBUT': 'str'})
df["normalized_date"] = df["VON_DTM"].dt.floor("D")
min_dat = min(df['normalized_date'])
max_dat = np.datetime64(datetime.now().date())
articles = df['Artikel'].unique()
dates = np.arange(min_dat, max_dat, step=np.timedelta64(1,'D'))
df = df.set_index(['Artikel','VON_DTM']).groupby(['Artikel','normalized_date']).first()
index = pd.MultiIndex.from_product([articles, dates],names=['Artikel', 'normalized_date'])
df.info()
print(df.query('Artikel == "00017"'))
df = df.reindex(index, method='pad')
df.info()
print(df.query('Artikel == "00017" & normalized_date >= "2018-10-01" & normalized_date <= "2018-11-25"'))
下面列出了輸出
<class 'pandas.core.frame.DataFrame'>
MultiIndex: 13265 entries, (00017, 2018-10-01 00:00:00) to (25003, 2018-11-22 00:00:00)
Data columns (total 1 columns):
ATTRIBUT 13265 non-null object
dtypes: object(1)
memory usage: 170.5+ KB
ATTRIBUT
Artikel normalized_date
00017 2018-10-01 0
2018-11-21 3
<class 'pandas.core.frame.DataFrame'>
MultiIndex: 834065 entries, (00017, 2018-10-01 00:00:00) to (25003, 2020-03-18 00:00:00)
Data columns (total 1 columns):
ATTRIBUT 833877 non-null object
dtypes: object(1)
memory usage: 9.6+ MB
ATTRIBUT
Artikel normalized_date
00017 2018-10-01 3
2018-10-02 3
...
2018-11-01 3
2018-11-02 NaN
2018-11-03 NaN
2018-11-04 NaN
2018-11-05 NaN
2018-11-06 0
2018-11-07 3
2018-11-08 3
...
2018-11-25 3
我希望 ATTRIBUT 的值從 0 開始,並在 2018 年 11 月 21 日更改為 3。 我錯過了什么?
似乎我找到了替換的解決方案
df = df.reindex(index, method='pad')
和
df = df.reindex(index)
df["ATTRIBUT"] = df["ATTRIBUT"].unstack(0).fillna(method = 'pad').unstack()
現在它正在按預期工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.