Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pandas使用df.loc保留原始行索引_Python_Pandas - Fatal编程技术网

Python Pandas使用df.loc保留原始行索引

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

我想筛选一个表并选择一些列,使用它们,然后与原始表合并(左连接)

最初的df是这样的:

(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