Python pandas如何让Max Prod列仅显示单个最大值其余留空
问题说明
现有Python函数期望实现指定列仅展示单个特定值的效果,原代码如下:
def show_data(): df = pd.DataFrame(myresult, columns=['Year', 'Production (Ton)']) df['Max Prod'] = df['Production (Ton)'].max()) print(df)
运行代码后,输出的DataFrame中Max Prod列所有行均重复填充了Production (Ton)列的最大值366999,期望效果为Max Prod列仅显示1次最大值,其余行该列留空。
问题原因
直接给DataFrame新列赋值单个标量值时,pandas会自动将该值广播到列的所有行,因此会出现全列重复填充最大值的情况。另外原代码max()末尾多了一个多余的右括号,属于语法错误,运行前需要先删除。
修改方案
- 先初始化
Max Prod列为空值,可根据展示需求选择pandas缺失值pd.NA或者空字符串'' - 计算产量列的最大值,将该值仅赋值给需要展示的目标行,通常放在最大值对应的产量行,也可根据需求固定放在第一行
修改后的可运行代码如下:
import pandas as pd def show_data(): df = pd.DataFrame(myresult, columns=['Year', 'Production (Ton)']) # 初始化新列为空值,要显示空白字符串就把pd.NA换成'' df['Max Prod'] = pd.NA max_prod = df['Production (Ton)'].max() # 找到产量最大值对应的行索引,把最大值赋值到该行 max_index = df['Production (Ton)'].idxmax() df.loc[max_index, 'Max Prod'] = max_prod print(df)
如果需要把最大值固定放在第一行,把对应赋值行替换为df.loc[0, 'Max Prod'] = max_prod即可。
内容的提问来源于stack exchange,提问作者twyla
相关产品推荐
相关产品推荐

