簡體   English   中英

使用函數調用在 Pandas 數據框中填充列

[英]Populating column in pandas dataframe using a function call

我如何使用.loc.str.match()來更新列值但使用函數調用? 我正在嘗試的代碼就像;

df.loc[df['Col1'].str.match(r'\d\d/\d\d/\d\d\d\d', na=False), 'Col2'] = _my_func(df['Col1'])

一個簡單的正則表達式模式來查找日期格式,然后是_myfunc()

def _my_func(data)
    for row in data.iteritems():
        day = int(row[1][:2])
        month = int(row[1][3:5])
        year = int(row[1][6:])
        fecha = datetime.datetime(year, month, day, 0, 0, 0)
        diff =  fecha - datetime.datetime.now()
        if diff.days > 0:
            return 'Yes'
        elif diff.days < 0:
            return 'No'

這是將值從函數返回到數據幀的正確方法嗎?

另外,如果我插入print('test')_my_func只是之前return ,只打印test一次,而不是在傳遞給函數的數據每行的打印,沒有人知道為什么嗎? 謝謝你。

按照我的評論:

def _my_func(x):
    day = int(x[:2])
    month = int(x[3:5])
    year = int(x[6:])
    fecha = datetime.datetime(year, month, day, 0, 0, 0)
    diff = fecha - datetime.datetime.now()
    if diff.days > 0:
        return 'Yes'
    elif diff.days < 0:
        return 'No'

其次是:

df.loc[df['Col1'].str.match(r'\d\d/\d\d/\d\d\d\d', na=False), 'Col2'] = df['Col1'].apply(_my_func)

您可以嘗試使用apply()函數。

例如:

df['loc1'] = df['loc1'].apply(_my_func)

然后它將獲取數據幀的每一行並將其作為輸入傳遞給函數_my_func

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM