【问题标题】:Python - How to get columns of the DataFrame and then filter it to keep only certain valuesPython - 如何获取 DataFrame 的列,然后对其进行过滤以仅保留某些值
【发布时间】:2020-12-04 12:03:32
【问题描述】:

我有一个带有如下所示列的 pandas 数据框:

data = {"col1":[1, 2, 3], "col2":[1, 2, 3],"2020-10-19":[1, 2, 3], "2018-10-19":[4, 5, 6], "2016-10-19":[7, 8, 9]}

df = pd.DataFrame(data)
allcolumns= list(df.columns)

现在我想通过 allcolumns 变量并删除任何不是上面显示的日期格式的元素。所以我的所有列应该有元素[“2020-10-19”、“2018-10-19”、“2016-10-19”]。 col1 和 col2 应该被删除。 注意:- 我对 pandas 很陌生,还在努力学习。

【问题讨论】:

    标签: python pandas list


    【解决方案1】:

    你可以使用pd.to_datetime:

    In [4550]: x = pd.to_datetime(allcolumns, errors='coerce')
    
    In [4551]: x
    Out[4551]: DatetimeIndex(['NaT', 'NaT', '2020-10-19', '2018-10-19', '2016-10-19'], dtype='datetime64[ns]', freq=None)
    

    您可以删除NaT 喜欢:

    In [4563]: cols = [i for i in pd.to_datetime(allcolumns, errors='coerce') if not pd.isnull(i)]
    
    In [4564]: cols
    Out[4564]: 
    [Timestamp('2020-10-19 00:00:00'),
     Timestamp('2018-10-19 00:00:00'),
     Timestamp('2016-10-19 00:00:00')]
    

    要仅获取max 值,您可以这样做:

    In [4550]: x = pd.to_datetime(allcolumns, errors='coerce')
    In [4568]: pd.Series(x).max()
    Out[4568]: Timestamp('2020-10-19 00:00:00')
    

    【讨论】:

    • 如何删除“NAT”?可能吗?或者我想要 x 的最大日期,我可以只得到一个最大日期吗?谢谢 Mayank。
    • @TanuAD 已更新我的答案,请检查。
    猜你喜欢
    • 2016-07-01
    • 2018-04-21
    • 2020-05-31
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 2021-02-21
    • 2021-03-07
    • 2017-04-25
    相关资源
    最近更新 更多