[英]Select row with middle value in a column Pandas
我想找到Quantity
列中间的值。
Branch Buyer Quantity Date
0 A Carl 1 2013-01-01 13:00:00
1 A Mark 4 2013-01-01 13:05:00
2 A Carl 5 2013-10-01 20:00:00
3 A Carl 1 2013-10-02 10:00:00
4 A Joe 8 2013-10-01 20:00:00
5 A Joe 1 2013-10-02 10:00:00
6 A Joe 9 2013-12-02 12:00:00
7 B Carl 7 2013-12-02 14:00:00
np.median([1,4,5,1,8,1,9,7])
返回4.5
,但它不是列中的实际值。
排序后:
[1, 1, 1, 4, 5, 7, 8, 9]
如何获得Quantity
的4
或5
行?
尝试这个:
a = [1, 1, 1, 4, 5, 7, 8, 9]
a[np.argmin(abs(a - np.median(a)))]
# Output: 4.0
解释:
使用np.median()
找到中位数
使用abs()
找到每个数字与中位数之间的距离
找到具有最小距离的数字的索引
使用索引从原始列表中获取值
如果有多个距离相等的数字(在您的示例中为 4 和 5),则将选择先到者。
对于列表中的偶数条目,我的理解是中位数是中间两个整数的平均值。 对于奇数条目,中位数是中间条目。
对于偶数行和排序数据,您可以尝试:
if df.shape[0] is even (add appropriate code):
np.median(dataFrame.Quantity[:-1])
or
np.median(dataFrame.Quantity[1:])
要获得 Quantity 列的中间值,您可以尝试以下操作:
x=len(df['Quantity'])
df['Quantity'][(0+x)//2]
您可以使用最接近列表中间的索引:
lst = [1, 1, 1, 4, 5, 7, 8, 9]
print(lst[len(lst)//2])
Output:
5
如您所见, len(lst)
结果为8
,因此len(lst)//2
给出4
。 lst
的第四个索引的值为5
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.