我想过滤一个表并选择几列,处理它们,然后与原始表合并(左连接)。
原来的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 有没有办法保留原来的索引? 我想使用索引与原始表执行左连接(在对数据做了一些操作之后)。
谢谢
答案 0 :(得分:2)
您可以使用 where()
方法并将 loc[]
访问器链接到它:
df_copy_hour=df.where(df['freq']=="hour").loc[:,["source","destination"]]
现在如果你打印 df_copy_hour
你会得到:
source destination
(pandas index)
0 NaN NaN
1 source_path2 destination_2
2 NaN NaN
现在如果要删除 NaN
值,请使用:
df_copy_hour=df_copy_hour.dropna()
所以现在如果你打印 df_copy_hour
你会得到:
source destination
(pandas index)
1 source_path2 destination_2
或
您可以通过以下方式在单行中执行此操作:
df_copy_hour=df.where(df['freq']=="hour").loc[:,["source","destination"]].dropna()