Python 如何使用Pandas将数据帧中的列拆分为两个单独的列
如何将a列拆分为两个单独的列。申请是解决这个问题的方法吗?我想保留数据框中的其他列 例如,我有一个名为“last_created”的专栏,其中有一组日期和时间:“2016-07-01 09:50:09” 我想用拆分值创建两个新列“date”和“time” 这是我尝试过的,但它返回了一个错误。由于某种原因,我的数据从str转换为float,所以我强制它转换为strPython 如何使用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
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