我正在尝试合并两个DataFrame,以便它们仅基于“诊断”列中的匹配值进行合并。现在,我从第一个数据集中获取了重复项,我只需要添加与0或1相匹配的列即可。
我尝试了内连接,外连接,左连接和右连接。
diagnosis radius_mean texture_mean perimeter_mean area_mean smoothness_mean compactness_mean concavity_mean concave points_mean symmetry_mean ... fractal_dimension_worst thickness size shape adhesion single nuclei chromatin nucleoli mitosis
0 1 17.99 10.38 122.80 1001.0 0.11840 0.27760 0.3001 0.1471 0.2419 ... 0.11890 8 10 10 8 7 10.0 9 7 1
1 1 17.99 10.38 122.80 1001.0 0.11840 0.27760 0.3001 0.1471 0.2419 ... 0.11890 5 3 3 3 2 3.0 4 4 1
2 1 17.99 10.38 122.80 1001.0 0.11840 0.27760 0.3001 0.1471 0.2419 ... 0.11890 8 7 5 10 7 9.0 5 5 4
3 1 17.99 10.38 122.80 1001.0 0.11840 0.27760 0.3001 0.1471 0.2419 ... 0.11890 7 4 6 4 6 1.0 4 3 1
4 1 17.99 10.38 122.80 1001.0 0.11840 0.27760 0.3001 0.1471 0.2419 ... 0.11890 10 7 7 6 4 10.0 4 1 2
5 1 17.99 10.38 122.80 1001.0 0.11840 0.27760 0.3001 0.1471 0.2419 ... 0.11890 7 3 2 10 5 10.0 5 4 4
6 1 17.99
答案 0 :(得分:0)
我只是这样回答,因为较长的文本在注释中不太方便。
在两个数据帧都包含用merge
指定的列的多个行的情况下,观察到的是on
的典型行为。例如,如果您在m
中有new_df_32
条记录,在diagnosis=1
中有n
条记录,并且new_df_10
条记录,则将在合并数据框中获得n*m
条记录与diagnosis=1
。
如果不是这样,您想要实现什么,并且只想从new_df_10
到new_df_32
添加字段,则有两种可能性:
on
参数中包括其他列。 new_df_32
产生的聚合数据帧加入new_df_10
。这意味着,您将new_df_32
的所有行与一个数据框连接在一起,该数据框仅包含diagnosis=0
的一行和diagnosis=1
的一行。第二种情况如下:
df10_aggregated= new_df_10.groupby(['diagnosis']).agg('first')
merged_df = pd.merge(new_df_32, df10_aggregated, left_on="diagnosis", right_index=True, how='left')
您只需要详细说明实际需要如何聚合数据帧(哪个聚合函数用于哪个列),并考虑到在first
的情况下数据帧的排序起了作用,所以在在这种情况下,您可能还需要先对其进行排序(使用sort_values)。