gpt4 book ai didi

python - 从 Python 中的 year-mm-dd 行中切出年份

转载 作者:太空宇宙 更新时间:2023-11-03 15:42:32 25 4
gpt4 key购买 nike

我正在尝试对 pandas 数据框中的大型对象类型列进行切片。此列中的所有日期均采用“year-mm-dd”格式,我想先将其替换为“year”值,然后将其转换为数字列。

我尝试执行以下操作:

for i in range(len(df.index)):
df.age[i]=df.age[i][:4]

我直接得到这样的警告和错误:

/home/nbuser/anaconda3_501/lib/python3.6/site-packages/ipykernel/__main__.py:2: 
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: http://pandas.pydata.org/pandas-
docs/stable/indexing.html#indexing-view-versus-copy
from ipykernel import kernelapp as app
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-262-b01a66467d00> in <module>()
1 for i in range(len(df.index)):
----> 2 df.age[i]=df.age[i][:4]

IndexError: invalid index to scalar variable.

如果可行,我想做的是将此列从对象转换为数字列,方法是:

df['age'] = pd.to_numeric(df['age'])

通过输入 .to_dict 提示,我得到:

输入: df['年龄'].to_dict()输出: {0: '1966-04-08', 1: '1965-05-14', 2: '1965-08-12', 3: '1968-02-15', 4: '1968-08-08', ...} 我删掉了剩下的,因为有超过 16000 个值

另外,当我得到 dtype 时,我得到:输入: df['年龄'].dtype输出: dtype('O')

预先感谢您的帮助!

最佳答案

您可以尝试以下 2 种之一:

df['age'] = df['age'].astype(str).str.split('-').str[0].astype(int)
df['age'] = df['age'].astype(str).str[:4].astype(int)

关于python - 从 Python 中的 year-mm-dd 行中切出年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51744314/

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