熊猫:如何获取行包含日期的列名?

时间:2015-12-04 18:42:54

标签: python pandas

我有一个名为DateUnique的数据框,由我的另一个名为A的数据框中的所有唯一日期(格式日期时间或字符串)组成。

>>> print(A)
          'dateLivraisonDemande'  'abscisse' 'BaseASDébut' 'BaseATDébut'  0                 2015-05-27  2004-01-10      05:00:00      05:00:00   
    1                 2015-05-27  2004-02-10      18:30:00      22:30:00   
    2                 2015-05-27  2004-01-20      23:40:00      19:30:00   
    3                 2015-05-27  2004-03-10      12:05:00      06:00:00   
    4                 2015-05-27  2004-01-10      23:15:00      13:10:00   
    5                 2015-05-27  2004-02-10      18:00:00      13:45:00   
    6                 2015-05-27  2004-01-20      02:05:00      19:15:00   
    7                 2015-05-27  2004-03-20      08:00:00      07:45:00   
    8                 2015-05-29  2004-01-01      18:45:00      21:00:00   
    9                 2015-05-27  2004-02-15      04:20:00      07:30:00   
    10                2015-04-10  2004-01-20      13:50:00      15:30:00  

>>> print(DateUnique)    
1       1899-12-30
2       1900-01-01
3       2004-03-10
4       2004-03-20
5       2004-01-20
6       2015-05-29
7       2015-04-10
8       2015-05-27
9       2004-02-15
10      2004-02-10
  • 如何获取包含每个日期的列的名称?
  • 可能与此类似:

    # input: 
    If row == '2015-04-10':
                print(df.name_Of_Column([0])) 
    
    # output: 
    'dateLivraisonDemande'
    

1 个答案:

答案 0 :(得分:1)

您可以创建一个返回相应列的函数。使用向量化的isin函数,然后检查any值是否为True

df = pd.DataFrame({'dateLivraisonDemande': ['2015-05-27']*7 + ['2015-05-27', '2015-05-29', '2015-04-10'], 
                   'abscisse': ['2004-02-10', '2004-01-20', '2004-03-10', '2004-01-10', 
                                '2004-02-10', '2004-01-20', '2004-03-10', '2004-01-10', 
                                '2004-02-15', '2004-01-20']})

DateUnique = pd.Series(['1899-12-30', '1900-01-01', '2004-03-10', '2004-03-20',  
                        '2004-01-20', '2015-05-29', '2015-04-10', '2015-05-27', 
                        '2004-02-15', '2004-02-10'])

def return_date_columns(date_input):
    if df["dateLivraisonDemande"].isin([date_input]).any():
        return "dateLivraisonDemande"
    if df["abscisse"].isin([date_input]).any():
        return "abscisse"

>>> DateUnique.apply(return_date_columns)
0                    None
1                    None
2                abscisse
3                    None
4                abscisse
5    dateLivraisonDemande
6    dateLivraisonDemande
7    dateLivraisonDemande
8                abscisse
9                abscisse
dtype: object