检查两个日期是否在同一个月内python pandas [关闭]

x8diyxa7  于 2023-10-14  发布在  Python
关注(0)|答案(4)|浏览(123)

已关闭,此问题需要details or clarity。它目前不接受回答。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

8小时前关闭
Improve this question
我有以下 Dataframe :

df= {
    "Date_one": ["05-02-2023", "04-12-2023", "02-23-2023", "01-01-2023", "10-11-2023"],
    "Date_two": ["05-22-2023", "06-02-2023", "05-22-2023", "01-22-2023", "10-23-2023"],
}

| 日期_一|日期_二|
| --|--|
| 2023年02月05日|2019 - 05-22|
| 2023年4月12日|2023年02月06日|
| 2023年2月23日|2019 - 05-22|
| 2023年1月1日|2023年1月22日|
| 2023年10月11日|2023年10月23日|
我需要检查两个日期是否在同一个月内,比如第一行和最后一行。
获得这一结果的最佳方法是什么?
| 日期_一|日期_二|Str_yes or not|
| --|--|--|
| 2023年02月05日|2019 - 05-22|是的,已经付了|
| 2023年4月12日|2023年02月06日|无薪|
| 2023年2月23日|2019 - 05-22|无薪|
| 2023年1月1日|2023年2月22日|无薪|
| 2023年10月11日|2023年10月23日|是的,已经付了|
我曾想过在另一列中指定该月的最后一天相对于第一列。

dsf9zpds

dsf9zpds1#

比较datetime对象之间的.dt.month属性(通过应用pd.to_datetime初步获得):

df['Pay_status'] = np.where(df['Date_one'].dt.month == df['Date_two'].dt.month,
                            'Yes, is paid', 'No pay')
Date_one   Date_two    Pay_status
0 2023-05-02 2023-05-22  Yes, is paid
1 2023-04-12 2023-06-02        No pay
2 2023-02-23 2023-05-22        No pay
3 2023-01-01 2023-01-22  Yes, is paid
4 2023-10-11 2023-10-23  Yes, is paid
8mmmxcuj

8mmmxcuj2#

假设df是你的框架,pandas是作为pd导入的:

df['output'] = (pd.to_datetime(df.Date_one).dt.month == pd.to_datetime(df.Date_two).dt.month).replace({True:'yes',False:'no'})
bxgwgixi

bxgwgixi3#

您应该首先确保Date列的类型为datetime。例如,如果您正在从csv文件中阅读表,则可以执行以下操作:

data = pd.read_csv('location.csv', parse_dates=['Date_one', 'Date_two'])

或在之后转换它们:

data['Date_one'] = pd.to_datetime(data.Date_one)

那么你可以简单地做:

data['paid_same_month'] = (data.Date_one.dt.month == data.Date_two.dt.month).map(
    {True: 'Yes', False: 'No'})
rvpgvaaj

rvpgvaaj4#

也许像这样:

import pandas as pd

data = {
    "Date_one": ["05-02-2023", "04-12-2023", "02-23-2023", "01-01-2023", "10-11-2023"],
    "Date_two": ["05-22-2023", "06-02-2023", "05-22-2023", "01-22-2023", "10-23-2023"],
}
df = pd.DataFrame(data)

# Convert date columns into DateTime objects with the specified format
df["Date_one"] = pd.to_datetime(df["Date_one"], format="%m-%d-%Y")
df["Date_two"] = pd.to_datetime(df["Date_two"], format="%m-%d-%Y")

# Extract months from date columns
df["Month_Date_one"] = df["Date_one"].dt.month
df["Month_Date_two"] = df["Date_two"].dt.month

# Adds a Boolean column to check if months are equal
df["Month_Equal"] = df["Month_Date_one"] == df["Month_Date_two"]
df["Month_Equal"] = df["Month_Equal"].map({True: "Yes, is paid", False: "No pay"})

print(df)

相关问题