【问题标题】:Filter and select random rows过滤并选择随机行
【发布时间】:2021-10-18 04:13:39
【问题描述】:

我不熟悉 Python 中的 pandas 和 openpyxl 包,但我只是想知道是否可以从 excel 文件中选择随机过滤的行并将输出保存在单独的 excel 文件中?

例如: 下面的数据代表了我的 excel 文件中的内容,我想做的是:

A  B  C  D  E  F   G
1  x  -8  x  x  x  10/12/2019
3  x  +9  x  x  x  28/12/2019
4  x  +2  x  x  x  12/12/2019
1  x  -2  x  x  x  15/12/2019
4  x  -9  x  x  x  19/12/2019
5  x  -1  x  x  x  25/12/2019
  1. 仅过滤 C 列中的负值(“-ve”)
  2. 仅过滤到 2019 年 12 月 15 日以后的项目(G 列)
  3. 从此过滤列表中随机选择样本(例如 2 个)
  4. 将 2 个随机选择的样本保存在一个新的 excel 文件中,标题为 (A,B,C,D,E,F,G)

有什么办法可以做到吗? 我可能会使用该脚本超过 20 次。

谢谢!

【问题讨论】:

    标签: excel pandas random filter openpyxl


    【解决方案1】:

    你可以使用:

    from numpy.random import choice
    
    df['G']=pd.to_datetime(df['G'])
    #ensure that datelike column is of type datetime
    out=df.loc[df['C'].le(-1) & df['G'].ge(pd.to_datetime('15/12/2019'))]
    #Check your 1st and 2nd condition
    out.loc[choice(out.index,2)].to_excel('filename.xlsx',index=False)
    #get random 2 values from the filtered rows and save it to excel
    

    【讨论】:

    • 谢谢阿努拉格。想咨询另一件事。假设我管理生成一个包含系统中所有负值的列表(因此我现在不需要只过滤负值)但我需要过滤一个带有“标准发票”字样的新列 ,这样做=df.loc[df['C'].le("标准发票")] 工作?
    • @ejbeh 不,如果您需要df.loc[df['C'].str.contains("Standard Invoice")] ,如果答案对您有帮助,请尝试接受答案(点击勾选使其变为绿色)......谢谢:)
    • 嗨 Anurag,我正在玩代码,想知道是否要将标准更改为 2019 年 12 月 15 日之前(假设我的数据从 2019 年 1 月 12 日开始),我应该怎么做将代码更改为“2019 年 12 月 15 日之前”?非常感谢!
    • @ejbeh chenge ge 到 lt 处理那个案例
    • @ejbeh 所以它变成out=df.loc[df['C'].le(-1) & df['G'].lt(pd.to_datetime('15/12/2019'))] 如果答案帮助你请尝试接受答案(点击勾选使其变为绿色)......谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 2011-06-30
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    相关资源
    最近更新 更多