Python Pandas使用df.loc保留原始行索引
我想筛选一个表并选择一些列,使用它们,然后与原始表合并(左连接) 最初的df是这样的:Python Pandas使用df.loc保留原始行索引,python,pandas,Python,Pandas,我想筛选一个表并选择一些列,使用它们,然后与原始表合并(左连接) 最初的df是这样的: (pandas index) source destination freq 0 source_path1 destination_1 day 1 source_path2 destination_2 hour 2 source_path3 des
(pandas index) source destination freq
0 source_path1 destination_1 day
1 source_path2 destination_2 hour
2 source_path3 destination_3 day
然后我使用df.loc过滤并选择一些列:
df_copy_hour=df.loc[df['freq']=="hour", ["source","destination"]]
这给了我一个新的df,但行有一个新的索引:
(pandas index) source destination
0 source_path2 destination_2
有没有办法让df.loc保留原始索引?
我想使用索引执行与原始表的左连接(在对数据做了一些处理之后)
谢谢您可以使用方法和链接loc[]
访问器:
df_copy_hour=df.where(df['freq']=="hour").loc[:,["source","destination"]]
现在,如果您打印df\u copy\u hour
,您将获得:
source destination
(pandas index)
0 NaN NaN
1 source_path2 destination_2
2 NaN NaN
source destination
(pandas index)
1 source_path2 destination_2
现在,如果要删除NaN
值,请使用:
df_copy_hour=df_copy_hour.dropna()
因此,现在如果您打印df\u copy\u hour
,您将得到:
source destination
(pandas index)
0 NaN NaN
1 source_path2 destination_2
2 NaN NaN
source destination
(pandas index)
1 source_path2 destination_2
或
您可以通过以下方式在单行中执行此操作:
df_copy_hour=df.where(df['freq']=="hour").loc[:,["source","destination"]].dropna()
似乎对于上面的代码,.
loc
已维护原始索引1
,而不是将其重置为0
。