繁体   English   中英

Select 行与列中的中间值 Pandas

[英]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]

如何获得Quantity45行?

尝试这个:

a = [1, 1, 1, 4, 5, 7, 8, 9]

a[np.argmin(abs(a - np.median(a)))]

# Output: 4.0

解释:

  1. 使用np.median()找到中位数

  2. 使用abs()找到每个数字与中位数之间的距离

  3. 找到具有最小距离的数字的索引

  4. 使用索引从原始列表中获取值

如果有多个距离相等的数字(在您的示例中为 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM