python-如果在列表中多次出现,如何从数据框中多次选择行,而不更改列顺序?
假设我有一个数据框
data = {'Date': ['22-08-2021', '12-09-2021', '02-10-2021', '22-11-2021'], 'ID': ['A', 'B', 'C', 'O'], 'Item':['Apple','Banana','Carrot', 'Orange'], 'Cost':[10, 12, 15, 13]}
dataframe = pd.DataFrame(data)
dataframe
和一个索引列表,
index_list = ['A', 'A', 'B', 'B', 'O', 'C', 'C']
我想根据它们的索引多次选择行,因为它们出现在这个列表中,这样上面的数据框就会变成
data2 = {'Date':['22-08-2021', '22-08-2021', '12-09-2021', '12-09-2021', '22-11-2021', '02-10-2021', '02-10-2021'], 'ID': ['A', 'A', 'B', 'B', 'O', 'C', 'C'], 'Item':['Apple', 'Apple', 'Banana', 'Banana', 'Orange', 'Carrot', 'Carrot'], 'Cost':[10, 10, 12, 12, 13, 15, 15]}
dataframe2 = pd.DataFrame(data2)
dataframe2
使用 Pandas 执行此操作的最佳方法是什么?
我的做法:
我编写了以下 for 循环来实现这一点,但我认为应该有内置的 pandas 函数以更优雅和有效的方式来做到这一点。
dataframe2 = pd.DataFrame(columns = dataframe.columns)
for i in index_list:
idx = dataframe.index[dataframe['ID'] == i]
dataframe2 = pd.concat([dataframe2, dataframe.loc[idx]])
dataframe2
任何帮助将不胜感激。