假设您有一个包含多个字符串列的数据框。前两列的每种组合在第三列中只能有一个有效值。您需要通过按前两列对数据框进行分组并为每个组合选择第三列的最常见值来一致地清理数据。
以下代码演示了尝试实现此目的:
import pandas as pd<br>from scipy import stats</p> <p>source = pd.DataFrame({</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">'Country': ['USA', 'USA', 'Russia', 'USA'], 'City': ['New-York', 'New-York', 'Sankt-Petersburg', 'New-York'], 'Short name': ['NY', 'New', 'Spb', 'NY']})
source.groupby(['国家','城市']).agg(lambda x: stats.mode(x['简称'])[0])
但是,最后一行代码失败并出现 KeyError。如何解决此问题?
对于 Pandas 版本 0.16 及更高版本,请使用以下代码:
source.groupby(['Country','City'])['Short name'].agg(pd.Series.mode)此代码使用 Pandas 0.16 中引入的 pd.Series.mode 函数来查找最常见的值
处理多种模式的替代方案
Series.mode 函数可以有效地处理具有多种模式的情况:
虽然您可以使用 Python 中的 stats.mode,但它不能很好地处理多种模式,并且可能会引发统计错误。所以不推荐。
以上是如何高效地找到 Pandas DataFrame 组中最常见的值?的详细内容。更多信息请关注PHP中文网其他相关文章!