我有两个数据帧:
餐厅数据框
Data columns (total 13 columns):
business_id 4503 non-null values
categories 4503 non-null values
city 4503 non-null values
full_address 4503 non-null values
latitude 4503 non-null values
longitude 4503 non-null values
name 4503 non-null values
neighborhoods 4503 non-null values
open 4503 non-null values
review_count 4503 non-null values
stars 4503 non-null values
state 4503 non-null values
type 4503 non-null values
dtypes: bool(1), float64(3), int64(1), object(8)`
以及
餐厅回顾框架
Int64Index: 158430 entries, 0 to 229905
Data columns (total 8 columns):
business_id 158430 non-null values
date 158430 non-null values
review_id 158430 non-null values
stars 158430 non-null values
text 158430 non-null values
type 158430 non-null values
user_id 158430 non-null values
votes 158430 non-null values
dtypes: int64(1), object(7)
我想使用pandas中的dataframe.join()命令将这两个数据帧连接到一个数据帧中。
我尝试了以下代码行:
#the following line of code creates a left join of restaurant_ids_frame and restaurant_review_frame on the column 'business_id'
restaurant_review_frame.join(other=restaurant_ids_dataframe,on='business_id',how='left')
但是当我尝试这个时,我得到了以下错误:
Exception: columns overlap: Index([business_id, stars, type], dtype=object)
我对pandas很陌生,对于执行join语句而言,我不知道自己做错了什么。
任何帮助都将不胜感激。
您可以使用合并将两个数据帧合并为一个:
其中on指定要连接的两个数据帧中存在的字段名,以及如何连接 定义其内部/外部/左/右连接,外部使用“来自两个帧的键的并集(SQL:full outer join)。”由于两个数据帧中都有“star”列,因此默认情况下,这将在组合的数据帧中创建两列star_x和star_y。正如@DanAllan在join方法中提到的,您可以通过将其作为kwarg传递来修改合并的后缀。默认值是
suffixes=('_x', '_y')
。如果你想做像star_restaurant_id
和star_restaurant_review
这样的事情,你可以:参数在本link中有详细说明。
如果数据帧有一些共同的列名,则联接失败。最简单的方法是包含一个
lsuffix
或rsuffix
关键字,如下所示:这样,列就有了不同的名称。文档addresses this very problem。
或者,您可以通过在加入之前删除有问题的列来解决这个问题。例如,如果
restaurant_ids_dataframe
中的星与restaurant_review_frame
中的星是冗余的,则可以del restaurant_ids_dataframe['stars']
。如果有人需要尝试合并索引上的两个数据帧(而不是另一列),这也可以!
T1和T2是具有相同索引的数据帧
我不得不使用merge,因为append将不必要地填充NaNs。
相关问题 更多 >
编程相关推荐