我有一个列的值列表,我想从 Pandas 数据帧中选择它。此列表具有重复的值,我想以与列表中相同的顺序选择相应的行并重复。例如,假设我有以下数据框:
id value date
1 0.5 01-01-20
2 0.3 01-02-20
3 0.4 01-03-20
4 0.8 01-04-20
而这个列表:
dates=(01-01-20, 01-01-20, 01-02-20)
我想要这样的过滤数据框:
id value date
1 0.5 01-01-20
1 0.5 01-01-20
2 0.3 01-02-20
我尝试使用该功能.isin()
但它没有考虑重复项。我想这可以在 for 循环中完成,但是有没有一种"优雅"的方法可以做到这一点?
使用DataFrame.reindex
应该像DataFrame.loc
一样更可取的东西,因为如果没有匹配(但列的必要唯一值(,也可以工作:
dates=('01-01-20', '01-01-20', '01-02-20')
df = df.set_index('date').reindex(dates).reset_index().reindex(df.columns, axis=1)
print (df)
id value date
0 1 0.5 01-01-20
1 1 0.5 01-01-20
2 2 0.3 01-02-20