我有一个很长的数据集,想要连续获得最小/最大值:
County Year1 Year2 Year3 Year4
1 Autauga 54660 55253 51253 56253
输出应该看起来像
County Year1 Year2 Year3 Year4 Min Max Max-Min
1 Autauga 54660 55253 51253 56253 51253 56253 5000
我的第一次拍摄产生了一个字符串作为最大值(我已经阅读了论坛上的所有原因):
df['Max'] = df.max(axis=1)
1)如何排除我的第一列,以便max函数正确运行(我的输出中仍然需要县)?
2)如何运行max,min函数并一次计算每个值的差异?
干杯, P
答案 0 :(得分:2)
你可以通过一点iloc
切片魔术来完成这项工作。
df['Max'] = df.iloc[:, 1:].max(axis=1)
df['Min'] = df.iloc[:, 1:].min(axis=1)
df['Max - Min'] = df['Max'] - df['Min']
df
County Year1 Year2 Year3 Year4 Max Min Max - Min
1 Autauga 54660 55253 51253 56253 56253 51253 5000
答案 1 :(得分:2)
您还可以指定只想对数字元素执行此操作。
df['Max'] = df.max(axis=1, numeric_only=True)
df['Min'] = df.min(axis=1, numeric_only=True)
df['Max - Min'] = df['Max'] - df['Min']
# if you only need "Max - Min"
df['Max - Min'] = df.max(1, numeric_only=True) - df.min(1, numeric_only=True)
默认情况下,max
函数会尝试使用所有内容。使用extra参数,它将只包含计算中包含float,int和boolean值的列。在DataFrame.max
答案 2 :(得分:2)
IIUC:
In [43]: df = df.assign(**{'Max-Min':df.max(1)-df.min(1)})
In [44]: df
Out[44]:
County Year1 Year2 Year3 Year4 Max-Min
1 Autauga 54660 55253 51253 56253 5000