Python 在groupby函数之后合并两个不同大小的数据帧
我正在尝试将groupby筛选数据帧与原始数据帧关联起来。在执行groupby之后,我丢失了原始数据帧中的一些列。其想法是将其与各自的州和城市价值观联系起来。但是,当我尝试将数据帧向后关联时,数据帧会恢复到正常大小,有17行。我只需要原始数据帧到包含9行的最终数据帧的接口 原始数据帧:Python 在groupby函数之后合并两个不同大小的数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,我正在尝试将groupby筛选数据帧与原始数据帧关联起来。在执行groupby之后,我丢失了原始数据帧中的一些列。其想法是将其与各自的州和城市价值观联系起来。但是,当我尝试将数据帧向后关联时,数据帧会恢复到正常大小,有17行。我只需要原始数据帧到包含9行的最终数据帧的接口 原始数据帧: | COD |STATE| CITY | AZIM | SET|TEC| 0 |ALAAD_0001 |AL |MAC |0 |1 |4 | 1 |A
| COD |STATE| CITY | AZIM | SET|TEC|
0 |ALAAD_0001 |AL |MAC |0 |1 |4 |
1 |ALAAD_0001 |AL |MAC |120 |2 |4 |
2 |ALAAD_0001 |AL |MAC |120 |2 |4 |
3 |ALAAD_0001 |AL |MAC |240 |3 |4 |
4 |BAPID_0001 |BA |SAL |20 |1 |2 |
5 |BAPID_0001 |BA |SAL |20 |1 |2 |
7 |BAPID_0001 |BA |SAL |100 |2 |2 |
8 |BAPID_0001 |BA |SAL |210 |3 |2 |
9 |BAPID_0001 |BA |SAL |250 |3 |2 |
10 |BAPID_0001 |BA |SAL |250 |3 |2 |
11 |CEMBC_0003 |CE |FOR |90 |1 |4 |
12 |CEMBC_0003 |CE |FOR |80 |1 |4 |
13 |CEMBC_0003 |CE |FOR |160 |2 |4 |
14 |CEMBC_0003 |CE |FOR |160 |2 |4 |
15 |CEMBC_0003 |CE |FOR |170 |2 |4 |
16 |CEMBC_0003 |CE |FOR |280 |3 |4 |
分组后:
| COD |TEC |SET |AZIM|
0 |ALAAD_0001 |4 |1 |0 |
1 |ALAAD_0001 |4 |2 |120 |
2 |ALAAD_0001 |4 |3 |240 |
3 |BAPID_0001 |2 |1 |20 |
4 |BAPID_0001 |2 |2 |100 |
5 |BAPID_0001 |2 |3 |250 |
6 |CEMBC_0003 |4 |1 |90 |
7 |CEMBC_0003 |4 |2 |160 |
8 |CEMBC_0003 |4 |3 |280 |
df_-cut=(
df.groupby([“COD”、“TEC”、“SET”])
阿齐姆先生
.agg(lambda x:pd.Series.mode(x).max())
.reset_index()
)
预期产出:
| COD | TEC | SET |AZIM | STATE | CITY |
0 |ALAAD_0001 |4 |1 |0 | AL |MAC |
1 |ALAAD_0001 |4 |2 |120 | AL |MAC |
2 |ALAAD_0001 |4 |3 |240 | AL |MAC |
3 |BAPID_0001 |2 |1 |20 | BA |SAL |
4 |BAPID_0001 |2 |2 |100 | BA |SAL |
5 |BAPID_0001 |2 |3 |250 | BA |SAL |
6 |CEMBC_0003 |4 |1 |90 | CE |FOR |
7 |CEMBC_0003 |4 |2 |160 | CE |FOR |
8 |CEMBC_0003 |4 |3 |280 | CE |FOR |
我们使用内部连接合并两个数据帧,因为原始df在合并键上有重复项,所以它返回重复值。解决那个问题很方便 代码
df_cut.merge(df.drop_duplicates(), on=["COD","TEC","SET", "AZIM"])
输出
COD TEC SET AZIM STATE CITY
0 ALAAD_0001 4 1 0 AL MAC
1 ALAAD_0001 4 2 120 AL MAC
2 ALAAD_0001 4 3 240 AL MAC
3 BAPID_0001 2 1 20 BA SAL
4 BAPID_0001 2 2 100 BA SAL
5 BAPID_0001 2 3 250 BA SAL
6 CEMBC_0003 4 1 90 CE FOR
7 CEMBC_0003 4 2 160 CE FOR
8 CEMBC_0003 4 3 280 CE FOR
欢迎来到StackOverflow!有关创建和格式化示例的提示,请阅读指南和指南。另外,您是否只是在寻找df.drop_duplicates()?将州和城市与AZIM一起纳入原始groupby中应该是可行的。否则,使用合并是完全正确的方法。伙计,非常感谢你纠正了我问题的格式。我不知道如何在堆栈溢出上写一个表。你有一些资料来指导我吗?对于熊猫数据帧,只需打印出来并将结果复制到代码块中。不需要桌子。