Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从每行的最大值中减去最小值,然后单击DataFrame_Python_Pandas_Dataframe_Max_Min - Fatal编程技术网

Python 从每行的最大值中减去最小值,然后单击DataFrame

Python 从每行的最大值中减去最小值,然后单击DataFrame,python,pandas,dataframe,max,min,Python,Pandas,Dataframe,Max,Min,我有一个按州名和县名索引的人口普查数据集,我想在每一行中循环查找标记为“每年人口估计”的所有列中的最大值和最小值,然后减去这两个值。我希望函数返回一个带有索引和值的熊猫系列 这是我目前的代码: columns_to_keep=[ 'STNAME', 'CTYNAME', 'POPESTIMATE2010', 'POPESTIMATE2011', 'POPESTIMATE2012', 'POPESTIMATE2013', 'POPESTIMA

我有一个按州名和县名索引的人口普查数据集,我想在每一行中循环查找标记为“每年人口估计”的所有列中的最大值和最小值,然后减去这两个值。我希望函数返回一个带有索引和值的熊猫系列

这是我目前的代码:

columns_to_keep=[
    'STNAME',
    'CTYNAME',
    'POPESTIMATE2010',
    'POPESTIMATE2011',
    'POPESTIMATE2012',
    'POPESTIMATE2013',
    'POPESTIMATE2014',
    'POPESTIMATE2015' 
]
df=census_df[columns_to_keep]

def answer_seven(lst):
    lst=[df['POPESTIMATE2010'],df['POPESTIMATE2011'],df['POPESTIMATE2012'],
             df['POPESTIMATE2013'],df['POPESTIMATE2014'],df['POPESTIMATE2015']]

    return max(lst)-min(lst)

answer_seven(lst)
错误消息:

ValueError                                Traceback (most recent call last)
<ipython-input-110-845350b0b5f7> in <module>()
     18     return max(lst)-min(lst)
     19 
---> 20 answer_seven(lst)
     21 

<ipython-input-110-845350b0b5f7> in answer_seven(lst)
     16              df['POPESTIMATE2013'],df['POPESTIMATE2014'],df['POPESTIMATE2015']]
     17 
---> 18     return max(lst)-min(lst)
     19 
     20 answer_seven(lst)

/opt/conda/lib/python3.5/site-packages/pandas/core/generic.py in __nonzero__(self)
    890         raise ValueError("The truth value of a {0} is ambiguous. "
    891                          "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
--> 892                          .format(self.__class__.__name__))
    893 
    894     __bool__ = __nonzero__

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
ValueError回溯(最近一次调用)
在()
18返回最大值(lst)-最小值(lst)
19
--->20答案七(lst)
21
答案七(lst)
16 df['PopestimateMet2013']、df['PopestimateMet2014']、df['PopestimateMet2015']]
17
--->18返回最大值(lst)-最小值(lst)
19
20答案七(lst)
/opt/conda/lib/python3.5/site-packages/pandas/core/generic.py in\uuuuuuu nonzero\uuuuuuuu(self)
890 raise VALUERROR(“a{0}的真值不明确。”
891“使用a.empty、a.bool()、a.item()、a.any()或a.all()
-->格式(自类名称)
893
894 uuuuu bool uuuuuuu=uuuuuu非零__
ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。
< /代码> 

或考虑速度:

沿轴的值范围(最大值-最小值)


熊猫可以直接做到这一点:

cols_of_interest = ['POPESTIMATE2010', 'POPESTIMATE2011', 'POPESTIMATE2012', 'POPESTIMATE2013', 'POPESTIMATE2014' , 'POPESTIMATE2015']
df[cols_of_interest].max(axis=1) - df[cols_of_interest].min(axis=1)

这将返回一个序列,该序列由数据帧的原始索引和每行的最大值减去最小值编制索引

我对需要保留和使用的NaN值有问题,如下所示:

x = {}
for col in df_count:
    x[col] = df_count[col].max()- df_count[col].min()
pd.Series(x)

如何使用此代码返回索引标签可能存在重复?您可以创建一个系列,
pd.Series(np.ptp(df[cols\u of\u interest].values,axis=1),index=df.index)
。我可以找到历年人口差异最大的县,但数据类型是int64。如何让它仅返回县名称(索引)作为字符串?
x = {}
for col in df_count:
    x[col] = df_count[col].max()- df_count[col].min()
pd.Series(x)