gpt4 book ai didi

python - 在数据框中编辑日期以在 Pandas 中显示年份

转载 作者:太空宇宙 更新时间:2023-11-04 03:11:52 24 4
gpt4 key购买 nike

我有 2 个数据面板作为 df 在 pandas 中加载:

df1:

enter image description here

df2:

enter image description here

它们都具有相同的年份/国家/地区,但第一个具有 mm/dd/yy 格式的年份条目,而第二个只有年份。我需要合并它们,这应该不会太难,但我不知道如何重新格式化第一个中的日期,以便它指定年份而不是日期。提前致谢

最佳答案

看来需要显式拼接世纪(避免被解析为20XX):

In [11]: df = pd.DataFrame([["12/31/50", "Argentina"], ["12/31/51", "Argentina"], ["12/31/52", "Argentina"]], columns=["Year", "Country"])

In [12]: df
Out[12]:
Year Country
0 12/31/50 Argentina
1 12/31/51 Argentina
2 12/31/52 Argentina

无拼接:

In [13]: pd.to_datetime(df["Year"])
Out[13]:
0 2050-12-31
1 2051-12-31
2 2052-12-31
Name: Year, dtype: datetime64[ns]

In [14]: pd.to_datetime(df["Year"], format="%m/%d/%y")
Out[14]:
0 2050-12-31
1 2051-12-31
2 2052-12-31
Name: Year, dtype: datetime64[ns]

拼接:

In [15]: df["Year"].apply(lambda s: s[:-2] + "19" + s[-2:])
Out[15]:
0 12/31/1950
1 12/31/1951
2 12/31/1952
Name: Year, dtype: object

In [16]: pd.to_datetime(df["Year"].apply(lambda s: s[:-2] + "19" + s[-2:]), format="%m/%d/%Y")
Out[16]:
0 1950-12-31
1 1951-12-31
2 1952-12-31
Name: Year, dtype: datetime64[ns]

注意:您可以尝试在应用程序中进行解析(这可能效率更高)。


您可以使用 .dt 访问器从日期时间系列中提取年份:

In [21]: df["Year"] = pd.to_datetime(df["Year"].apply(lambda s: s[:-2] + "19" + s[-2:]), format="%m/%d/%Y")

In [22]: df["Year"].dt.year
Out[22]:
0 1950
1 1951
2 1952
Name: Year, dtype: int64

关于python - 在数据框中编辑日期以在 Pandas 中显示年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37738739/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com