我正在合并两个数据框,merge(..., how='left')
因为我只想保留与“左”数据框匹配的条目。问题是合并操作似乎删除了我最左边的数据框的索引,如下所示:
import pandas
df1 = pandas.DataFrame([{"id": 1,
"name": "bob"},
{"id": 10,
"name": "sally"}])
df1 = df1.set_index("id")
df2 = pandas.DataFrame([{"name": "bob",
"age": 10},
{"name": "sally",
"age": 11}])
print "df1 premerge: "
print df1
df1 = df1.merge(df2, on=["name"],
how="left")
print "merged: "
print df1
# This is not "id"
print df1.index
# And there's no "id" field
assert ("id" in df1.columns) == False
合并前,df1
被id
. 合并操作后,合并数据框只有默认数字索引,并且该id
字段被删除。如何进行这种合并操作但保留最左侧数据框的索引?
澄清一下:我希望将 的所有列df2
添加到df1
具有匹配id
值的每个条目中。如果 in 中的条目df2
的id
值不在 中df1
,则不应将其合并到中(因此是how='left'
)。
编辑:我可以作为一个黑客做:df1.reset_index()
但合并然后再次设置索引,但如果可能的话我不喜欢,似乎合并不应该删除索引。谢谢。