【问题标题】:Extract data-set with a given range from a larger dataset从更大的数据集中提取具有给定范围的数据集
【发布时间】:2021-04-06 08:50:42
【问题描述】:

我有一个类型为 (X,Y) 的二维数据集:

X Y
99.96 2
99.76 4
100.15 6
100.28 `0
100.66 11
101.17 14
102.36 4

我希望提取上述二维数据集的一部分,使得 100.00

X Y
100.15 6
100.28 `0
100.66 11

谁能告诉我我们如何在 Python 中做这件事?

【问题讨论】:

  • 嗨,@RanjanPal - 这个帖子对你有帮助吗?或任何后续问题?
  • 非常感谢@DanielHao 的建议。但是,有没有类似的逻辑可以应用于numpy.ndarray?

标签: python arrays python-3.x dataframe sorting


【解决方案1】:

您可以使用 pandas 从您的数据中创建一个数据框,并使用 between 进行过滤。

您可以使用 pd.read_csv、pd.read_excel、pd.from_dict 等轻松转换您的源数据。


import pandas as pd

# example pd read csv
# df = pd.read_csv('somefile.csv', header=0)

df = pd.DataFrame([[1,2],[3,4],[5,6],[2,3],[4,5]], columns=['a','b'])

print(df[df['a'].between(2,4)])


#   a  b
#1  3  4
#3  2  3
#4  4  5



【讨论】:

  • 非常感谢@KJDII 的宝贵反馈。
【解决方案2】:

也许只是一个简单的循环,没有任何3rd party 包? 如果需要保存结果,只需将print 语句替换为result.append()

data = [[99.96, 2],
        [97, 4],
        [100.15,6],
        [100.28,0],
        [101.17, 14],
        [102.36, 11]]


for x, y in data:
    #print(x, y)
    
    if 100.00 <= x <= 100.99:
        print(x, y)

【讨论】:

  • 非常感谢@DanielHao 的建议。
【解决方案3】:

如果给定的数据是“numpy.ndarray”类型,那么我们可以使用 'where' 命令:

import numpy as np

# Origianl data
data =  np.array([[99.96,2],[99.76,4],[100.15,6],[100.28,0],[100.66,11],[101.17,14],[102.36,4]])
print("\n","Original data=\n",data)


# Extracted Data
data_extracted = data[np.where((data[:,0] >= 100.001) & ( data[:,0]<= 100.999))]
print("\n","Extracted data=\n",data_extracted)

【讨论】:

    猜你喜欢
    • 2019-02-15
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 2011-04-18
    相关资源
    最近更新 更多