要清理包含多个字符串列的数据,需要按某些列对行进行分组并选择最常见的值每个组中特定列的通用值。本文演示了如何使用强大的 Pandas 库完成此任务。
初始查询中提供的代码包含一些错误,已在下面更正:
import pandas as pd source = pd.DataFrame({ 'Country': ['USA', 'USA', 'Russia', 'USA'], 'City': ['New York', 'New York', 'Saint Petersburg', 'New York'], 'Short Name': ['NY', 'New', 'Spb', 'NY']}) # Group by 'Country' and 'City' and calculate the most frequent 'Short Name' in each group result = source.groupby(['Country', 'City'])['Short Name'].apply(lambda x: pd.Series.mode(x)[0][0])
如果首选 DataFrame 作为结果:
result = source.groupby(['Country', 'City'])['Short Name'].agg(pd.Series.mode).to_frame()
如果您想为每个单独的行mode:
result = source.groupby(['Country', 'City'])['Short Name'].apply(pd.Series.mode)
注意:如果您愿意接受任何模式值作为选择,您可以使用 lambda 函数从系列中提取第一个模式:
result = source.groupby(['Country', 'City'])['Short Name'].agg(lambda x: pd.Series.mode(x)[0])
以上是如何找到 Pandas DataFrame 每组中最常见的值?的详细内容。更多信息请关注PHP中文网其他相关文章!