Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 拆分列值并重新指定给列_Python_Pandas - Fatal编程技术网

Python 拆分列值并重新指定给列

Python 拆分列值并重新指定给列,python,pandas,Python,Pandas,我正在使用以下pandas数据框,该数据框有一个包含日期的列作为字符串。日期也有时间 (Pdb) temp_df_no_na['logged_dt'].head(n=5) 0 01/19/2010 00:00:00.000000 1 03/28/2009 00:00:00.000000 2 09/22/2005 00:00:00.000000 3 12/14/2010 00:00:00.000000 5 02/23/2010 00:00:00.000000 我想按

我正在使用以下pandas数据框,该数据框有一个包含日期的列作为字符串。日期也有时间

(Pdb) temp_df_no_na['logged_dt'].head(n=5)
0    01/19/2010 00:00:00.000000
1    03/28/2009 00:00:00.000000
2    09/22/2005 00:00:00.000000
3    12/14/2010 00:00:00.000000
5    02/23/2010 00:00:00.000000
我想按当时日期之间的空格分割,只保留日期部分

我编写了以下lambda函数并进行了应用。它确实起了作用,但最终得到了警告,我担心结果可能会被破坏。为什么我会得到这样的警告:

temp_df_no_na['logged_dt'] =  temp_df_no_na['logged_dt'].apply(lambda x:x.split(" ")[0] if(x.split(" ") > 0) else x)
这是警告

SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  from dataFrameCreator import DataFrameCreator

(Pdb) temp_df_no_na['logged_dt'].head(n=5)
0    01/19/2010
1    03/28/2009
2    09/22/2005
3    12/14/2010
5    02/23/2010
方法1
使用pd.to\u datetime获取时间戳

temp_df_no_na.logged_dt = pd.to_datetime(temp_df_no_na.logged_dt)
temp_df_no_na.logged_dt

0   2010-01-19
1   2009-03-28
2   2005-09-22
3   2010-12-14
5   2010-02-23
Name: logged_dt, dtype: datetime64[ns]

方法2
dt.strftime

temp_df_no_na.logged_dt = pd.to_datetime(temp_df_no_na.logged_dt).dt.strftime('%Y-%m-%d')
temp_df_no_na.logged_dt

0   2010-01-19
1   2009-03-28
2   2005-09-22
3   2010-12-14
5   2010-02-23
Name: logged_dt, dtype: object

方法3
str.split

temp_df_no_na.logged_dt = temp_df_no_na.logged_dt.str.split().str[0]
temp_df_no_na.logged_dt

0   2010-01-19
1   2009-03-28
2   2005-09-22
3   2010-12-14
5   2010-02-23
Name: logged_dt, dtype: object

很抱歉,忘记添加我提到的lambda函数。您是否看到该函数存在问题lambda看起来很好。方法3是该方法的矢量化版本。您的COPYWARNING设置表示
temp\u df\u no\u na
被绑定到另一个数据帧。它警告您,当它是其他内容的副本时,您正在分配给它。但这与你问的问题无关。