[英]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.