繁体   English   中英

当某些列相同时合并行使用 Pandas Python

[英]Merging rows when some columns are the same using Pandas Python

现在我有一个 dataframe,我想合并行。 值 B 由列表中字符串的顺序确定 L = ['xx','yy','zz']

    A   B
0   a   xx
1   a   yy
2   b   zz
3   b   yy
  1. 对于第 0 行和第 1 行,A 列的结果为“a”,B 列的结果为“xx”(“xx”位于 L 中的“yy”之前)
  2. 对于第 2 行和第 3 行,A 列的结果为“b”,B 列的结果为“yy”(“yy”位于 L 中的“zz”之前)

期望的结果:

    A   B
0   a   xx
1   b   yy

您可以使用pandas.Series.mappandas.DataFrame.groupby

df['C'] = df['B'].map(dict(zip(L,range(len(L)))))
df.groupby('A')[['B','C']].apply(lambda x: x.iloc[x["C"].argmin()]['B'])
#A
#a    xx
#b    yy

您可以使用pandas.Categorical获得相同的结果:

df['B'] = pd.Categorical(df['B'], categories = L, ordered = True)
df.groupby('A').min()
#      B
#A
#a    xx
#b    yy

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM