在此先感谢您的帮助,我的问题在这里:
我已成功将我的df加载到ipython笔记本中,然后我在其上运行了一个组:
Letter x = new Letter(phrase.charAt(i));
产生了这样一个表:
现在我试图将它与另一个表合并:
station_count = station.groupby('landmark').count()
在同一个表上也是一个简单的组,但合并会产生错误:
TypeError:无法连接非NDFrame对象
使用此代码:
dock_count_by_station = station.groupby('landmark').sum()
我认为问题是我需要在合并它们之前设置两个表的索引,但我不断为下面的代码得到这个错误:
pandas.index.IndexEngine.get_loc中的pandas / index.pyx(pandas / index.c:3979)()
pandas.index.IndexEngine.get_loc中的pandas / index.pyx(pandas / index.c:3843)()
pandas.hashtable.PyObjectHashTable.get_item中的pandas / hashtable.pyx(pandas / hashtable.c:12265)() pandas.hashtable.PyObjectHashTable.get_item中的pandas / hashtable.pyx(pandas / hashtable.c:12216)()KeyError:' landmark'
station_count.set_index('界标&#39)
答案 0 :(得分:1)
使用join
您可以使用join
,它将索引上的表合并。您可能还希望指定加入类型(例如'外部','内部','左'或'右')。您有重叠的列名称(例如station_id),因此您需要指定后缀。
>>> dock_count_by_station.join(station_count, rsuffix='_rhs')
dockcount lat long station_id dockcount_rhs installation lat_rhs long_rhs name station_id_rhs
landmark
Mountain View 117 261.767433 -854.623012 210 7 7 7 7 7 7
Palo Alto 75 187.191873 -610.767939 180 5 5 5 5 5 5
Redwood City 115 262.406232 -855.602755 224 7 7 7 7 7 7
San Francisco 665 1322.569239 -4284.054814 2126 35 35 35 35 35 35
San Jose 249 560.039892 -1828.370075 200 15 15 15 15 15 15
使用merge
请注意,执行landmark
时默认设置了groupby
索引。如果您不希望这种情况发生,您可以随时使用as_index=False
,但之后您必须使用merge
代替join
。
dock_count_by_station = station.groupby('landmark', as_index=False).sum()
station_count = station.groupby('landmark', as_index=False).count()
>>> dock_count_by_station.merge(station_count, on='landmark', suffixes=['_lhs', '_rhs'])
landmark dockcount_lhs lat_lhs long_lhs station_id_lhs dockcount_rhs installation lat_rhs long_rhs name station_id_rhs
0 Mountain View 117 261.767433 -854.623012 210 7 7 7 7 7 7
1 Palo Alto 75 187.191873 -610.767939 180 5 5 5 5 5 5
2 Redwood City 115 262.406232 -855.602755 224 7 7 7 7 7 7
3 San Francisco 665 1322.569239 -4284.054814 2126 35 35 35 35 35 35
4 San Jose 249 560.039892 -1828.370075 200 15 15 15 15 15 15