【问题标题】:Python: store a value in a variable so that you can recognize each reoccurencePython:将值存储在变量中,以便您可以识别每次重复出现
【发布时间】:2017-02-20 02:52:14
【问题描述】:

如果这个问题不清楚,我非常愿意接受建设性的批评。

我有一个包含大约 50 行数据的 Excel 表,每行的第一列是日期。我只需要访问一个日期的所有数据,而那个日期只出现大约 1-5 次。这是最近的日期,所以我已经按日期组织了表格,最近的日期位于顶部。

所以我的目标是将该日期存储在一个变量中,然后让 Python 仅查找该变量(该日期)并仅获取与该变量对应的列。我还需要在 100 个其他 excel 文件上使用此代码,因此它需要任意取最近的日期(尽管总是在顶部)。

我下面的当前代码只取前 5 行,因为我知道这是该日期出现的次数。

import os
from numpy import genfromtxt
import pandas as pd

path = 'Z:\\folderwithcsvfile'

for filename in os.listdir(path):
    file_path = os.path.join(path, filename)
    if os.path.isfile(file_path):
        broken_df = pd.read_csv(file_path)
        df3 = broken_df['DATE']
        df4 = broken_df['TRADE ID']
        df5 = broken_df['AVAILABLE STOCK']
        df6 = broken_df['AMOUNT']
        df7 = broken_df['SALE PRICE']
        print (df3)
        #print (df3.head(6))
        print (df4.head(6))
        print (df5.head(6))
        print (df6.head(6))
        print (df7.head(6))

【问题讨论】:

    标签: python date pandas


    【解决方案1】:

    这是一个比较简单的过滤操作。您声明您想“仅获取最新日期的列”,因此我假设可接受的结果将是过滤器 DataFrame 仅包含正确的列。

    这是一个与您的结构类似的简单 CSV:

    DATE,TRADE ID,AVAILABLE STOCK
    10/11/2016,123,123
    10/11/2016,123,123
    10/10/2016,123,123
    10/9/2016,123,123
    10/11/2016,123,123
    

    请注意,我稍微混淆了日期,因为仅假设最新日期将在顶部是很麻烦且容易出错的。以下脚本将对其进行适当过滤:

    import pandas as pd
    import numpy as np
    
    df = pd.read_csv('data.csv')
    
    # convert the DATE column to datetimes
    df['DATE'] = pd.to_datetime(df['DATE'])
    
    # find the latest datetime
    latest_date = df['DATE'].max()
    
    # use index filtering to only choose the columns that equal the latest date
    latest_rows = df[df['DATE'] == latest_date]
    print (latest_rows)
    
    # now you can perform your operations on latest_rows
    

    在我的示例中,这将打印:

            DATE  TRADE ID  AVAILABLE STOCK
    0 2016-10-11       123              123
    1 2016-10-11       123              123
    4 2016-10-11       123              123
    

    【讨论】:

    • 效果很好,感谢我被这个问题困扰了好几天。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 1970-01-01
    • 2021-10-26
    • 2019-10-21
    • 1970-01-01
    • 2016-11-05
    • 2023-02-06
    相关资源
    最近更新 更多