Python 如何使用Pandas将数据帧中的列拆分为两个单独的列

Python 如何使用Pandas将数据帧中的列拆分为两个单独的列,python,pandas,dataframe,Python,Pandas,Dataframe,如何将a列拆分为两个单独的列。申请是解决这个问题的方法吗?我想保留数据框中的其他列 例如,我有一个名为“last_created”的专栏,其中有一组日期和时间:“2016-07-01 09:50:09” 我想用拆分值创建两个新列“date”和“time” 这是我尝试过的,但它返回了一个错误。由于某种原因,我的数据从str转换为float,所以我强制它转换为str def splitter(row): row = str(row) return row.split() df['d

如何将a列拆分为两个单独的列。申请是解决这个问题的方法吗?我想保留数据框中的其他列

例如,我有一个名为“last_created”的专栏,其中有一组日期和时间:“2016-07-01 09:50:09”

我想用拆分值创建两个新列“date”和“time”

这是我尝试过的,但它返回了一个错误。由于某种原因,我的数据从str转换为float,所以我强制它转换为str

def splitter(row):
    row = str(row)
    return row.split()

df['date'],df['time'] = df['last_created'].apply(splitter)
错误:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-47-e5a9cf968714> in <module>()
      7     return row.split()
      8 
----> 9 df['date'],df['time'] = df['last_created'].apply(splitter)
     10 df
     11 #splitter(df.iloc[1,1])

ValueError: too many values to unpack (expected 2)
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在()
7返回行。拆分()
8.
---->9 df['date'],df['time']=df['last_created']。应用(拆分器)
10 df
11#分路器(df.iloc[1,1])
ValueError:要解压缩的值太多(应为2个)

在我的例子中,我只是使用函数。ipython源代码如下

In [5]: df = dict(data="", time="", last_created="")

In [6]: df
Out[6]: {'data': '', 'last_created': '', 'time': ''}

In [7]: df["last_created"] = "2016-07-01 09:50:09"

In [8]: df
Out[8]: {'data': '', 'last_created': '2016-07-01 09:50:09', 'time': ''}

In [9]: def splitter(row):
   ...:     row = str(row)
   ...:     return row.split()

In [10]: df["data"], df["time"] = splitter(df["last_created"])

In [11]: df
Out[11]:
{'data': '2016-07-01',
 'last_created': '2016-07-01 09:50:09',
 'time': '09:50:09'}

以下内容应该适合您。但是,将日期和时间存储为时间戳非常便于操作

df['date'] = [d.split()[0] for d in df['last_created']]
df['time'] = [d.split()[1] for d in df['last_created']]
如果
dtype
object
,则可以首先转换,然后使用and:


谢谢你,杰克。在具有更多行的较大df上,返回值错误:太多值无法解压缩(预期为2个)谢谢!因为值是从str转换成float的,所以我必须这样做:对于df['last_created']中的d:d=str(d)df['date']=d.split()[0]
df = pd.DataFrame({'last_created':['2016-07-01 09:50:09', '2016-07-01 09:50:09']})
print (df)
          last_created
0  2016-07-01 09:50:09
1  2016-07-01 09:50:09

print (df.dtypes)
last_created    object
dtype: object

df['last_created'] = pd.to_datetime(df.last_created)

print (df.dtypes)
last_created    datetime64[ns]
dtype: object

df['date'], df['time'] = df.last_created.dt.date, df.last_created.dt.time
print (df)
         last_created        date      time
0 2016-07-01 09:50:09  2016-07-01  09:50:09
1 2016-07-01 09:50:09  2016-07-01  09:50:09