基于熊猫DF中的值返回日期时间
我正在工作从具有“ anual_quarters”的数据创建数据时间列,作为每个季度每个数据点的列名和值。
我正在考虑创建自定义功能并使用.Apply以返回可以使用的数据。但是我似乎无法使用Iterrows()()和IterItems()
Heres在数据的每一行/col上编写一个迭代的功能。
from datetime import datetime
def get_recent_orders(merged_data):
for index, row in merged_data.iteritems():
if row['q4_sales_2021'] > 0:
return datetime(2021, 10, 1)
elif row['q3_sales_2021'] > 0:
return datetime(2021, 7, 1)
elif row['q2_sales_2021'] > 0:
return datetime(2021, 4, 1)
elif row['q1_sales_2021'] > 0:
return datetime(2021, 1, 1)
elif row['q4_sales_2020'] > 0:
return datetime(2020, 10, 1)
elif row['q3_sales_2020'] > 0:
return datetime(2020, 7, 1)
elif row['q2_sales_2020'] > 0:
return datetime(2020, 4, 1)
elif row['q1_sales_2020'] > 0:
return datetime(2020, 1, 1)
else:
return None
merged_data['last_order'] = merged_data.apply(get_recent_orders, axis=0)
I'm working creating a data time column from a data that has "anual_quarters" as the column names and values for each data point of each quarter.
I was thinking of creating a custom function and using .apply to return a data I could use. But I can't seem to write a function the iterates over each row/col of the data using iterrows() and iteritems()
Heres the last thing I tried.
from datetime import datetime
def get_recent_orders(merged_data):
for index, row in merged_data.iteritems():
if row['q4_sales_2021'] > 0:
return datetime(2021, 10, 1)
elif row['q3_sales_2021'] > 0:
return datetime(2021, 7, 1)
elif row['q2_sales_2021'] > 0:
return datetime(2021, 4, 1)
elif row['q1_sales_2021'] > 0:
return datetime(2021, 1, 1)
elif row['q4_sales_2020'] > 0:
return datetime(2020, 10, 1)
elif row['q3_sales_2020'] > 0:
return datetime(2020, 7, 1)
elif row['q2_sales_2020'] > 0:
return datetime(2020, 4, 1)
elif row['q1_sales_2020'] > 0:
return datetime(2020, 1, 1)
else:
return None
merged_data['last_order'] = merged_data.apply(get_recent_orders, axis=0)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用numpy.select:
Use
numpy.select
:使用np.select:
With
np.select
:您可以做到这一点:
根据Q1、2、3或4的规定,每个月将是1月,APR,JUL或OCT字符串字符,最近4个字符的一年,day = 1。这样,根本不需要迭代行。
You could do this instead:
As the month will be Jan, Apr, Jul or Oct depending on Q1, 2, 3 or 4, you can return a
datetime.date
by finding the month value from the second string character, the year from the last 4 characters, and day = 1. This way, no need to iterate over rows at all.