由于缺少更好的用词,我想使用索引来“重新选择”一个数据框。
Column1 | Column2 | Column3
1 | 2 | 3
4 | 5 | 6
Data | |
Header | Header2 | Header3
7 | 8 | 9
我想选择此数据框,但要选择索引4,0
,以便它看起来像:
Header | Header2 | Header3
7 | 8 | 9
我知道我可以做类似的事情
df.iloc[[4,5], [0,1,2]]
但是问题是我并不总是知道此索引在每个数据帧中的位置,我唯一拥有的信息是我想从中开始的值的索引。
对于将来的旅行者,我最终以某种奇怪的方式完成了此操作。首先,我得到了我感兴趣的专栏:
columns = [x for x in df.iloc[4].values.flatten().tolist() if str(x) != 'nan']
然后我将需要的数据切成薄片:
data = df.iloc[5:, 0:2].values
最后创建了一个新的数据框:
df = pd.DataFrame(data, columns=columns)
我设置列的位置,4
是列所在行的索引(我已经知道的数字)。设置数据时,5:
表示第5行及以后的所有数据(因为我不知道它在哪里结束),0:2
是第1-3列。
我不确定这是否是最好的方法,但是它可以满足我的需要。
使用:
df[df["Column1"]=="Data"].index.item()
您将收到“数据”所在行的位置的索引。从那里可以使用df.iloc来查找所需的数据。