【发布时间】:2019-01-15 13:53:29
【问题描述】:
我正在尝试在 pandas 数据框中分割一个大型对象类型列。 此列中的所有日期均采用“年-月-日”格式,我想先将其仅替换为“年”值,然后将其转换为数字列。
我尝试执行以下操作:
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['age'].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')
提前感谢您的帮助!
【问题讨论】:
-
谢谢,我会调查一下
-
你能发布
df['age'].dtype显示的内容,以及列的格式是什么,我个人会转换为datetime,然后只需执行dt.year -
所以 df['age'].dtype 返回:dtype('O') 列的格式是 "yyyy-mm-dd" ,例如: "1967-12-25"
标签: python string pandas dataframe slice