gpt4 book ai didi

python - Pandas 拆分列值并分配回该列

转载 作者:行者123 更新时间:2023-11-28 17:23:04 26 4
gpt4 key购买 nike

我正在使用以下 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

最佳答案

方法一
使用 pd.to_datetime 获取 Timestamp

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]

方法二
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

关于python - Pandas 拆分列值并分配回该列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40536554/

26 4 0