<script src="https://maps.googleapis.com/maps/api/js"></script>
<div style="width: 100%; height: 100%;">
<div id="map" style="width: 50%; height: 100%; float: left;"></div>
<div id="panel" style="width: 50%; float: right;"></div>
</div>
如果一个 dataframe 中的 index 列与第二个数据框中的另一列具有相同的名称,那么panda无法合并?
答案 0 :(得分:9)
您需要明确指定如何加入表格。默认情况下,merge
会选择公共列名作为合并键。对于你的情况,
c.merge(orders, left_index=True, right_on='CustomID')
另请阅读pandas.DataFrame.merge
的文档。
希望这会有所帮助。
答案 1 :(得分:2)
join
方法默认执行左连接(how='left')
并连接数据帧的索引。因此,将orders
数据帧的索引设置为CustomerId
和然后加入。
# Create sample data.
orders = pd.DataFrame(
{'CustomerID': [10, 11, 10],
'OrderDate': ['2014-12-01', '2014-12-01', '2014-12-01']})
c = pd.DataFrame(
{'Address': ['Address for Mike', 'Address for Marcia'],
'Name': ['Mike', 'Marcia']},
index=pd.Index([10, 11], dtype='int64', name='CustomerID'))
# Join.
>>> c.join(orders.set_index('CustomerID'))
Address Name OrderDate
CustomerID
10 Address for Mike Mike 2014-12-01
10 Address for Mike Mike 2014-12-01
11 Address for Marcia Marcia 2014-12-01
或者,此merge
会给您相同的结果。在这里,您要加入c
(左侧数据框)的索引和右侧数据框中的CustomerID
列。确保指定how='left'
仅将右侧数据框中的项目连接到左侧的所有记录(保留与c
长度匹配的等效行数)。 merge
的默认行为是内部联接,其结果只包括c
中orders
中找到匹配项的记录(尽管这可能是您想要的结果)。
c.merge(orders, left_index=True, right_on='CustomerID', how='left')
答案 2 :(得分:1)
尝试重置索引:
c.reset_index().merge(orders)