在一个大型数据框中,我有一大堆具有不同名称和来源的数据。
Anshul Jain的可复制数据
First_Name Last_Name Source
Matt Jones XX
James Smith YY
Smith Weston AA
Weston Supermare CC
Matt Jones YY
Weston Supermare FF
# copy in with:
df = pd.read_clipboard(sep='\\s+')
数据如下:
+------------+-----------+--------+
| First Name | Last Name | Source |
+------------+-----------+--------+
| Matt | Jones | XX |
| James | Smith | YY |
| Smith | Weston | AA |
| Weston | Supermare | CC |
| Matt | Jones | YY |
| Weston | Supermare | FF |
+------------+-----------+--------+
我需要它看起来像这样:
+------------+-----------+--------+
| First Name | Last Name | Source |
+------------+-----------+--------+
| Matt | Jones | XX, YY |
| James | Smith | YY |
| Smith | Weston | AA |
| Weston | Supermare | CC, FF |
+------------+-----------+--------+
我可以使用以下方法来执行重复数据删除过程:
Conn_df = Conn_df.drop_duplicates(subset=['First Name', 'Last Name'])
但是,在进行重复数据删除之前,我需要将同一数据的所有源记录在同一行上。
答案 0 :(得分:2)
您可以使用DataFrame.groupby
将数据帧按列First Name
和Last Name
分组,然后在{{1}上应用agg
函数join
}列。
使用:
Source
此打印:
result = Conn_df.groupby(["First Name", "Last Name"])["Source"].agg(', '.join).reset_index()
print(result)
答案 1 :(得分:2)
执行此操作:
print(df.groupby(by=['FirstName', 'LastName']).agg(lambda x: ', '.join(x)))
FirstName LastName
James Smith YY
Matt Jones XX, YY
Smith Weston AA
Weston Supermare CC, FF