在我的数据框中,我有一列 [date_time/full_company_name] 包含日期、时间和公司名称。我想拆分列以便有两列,一列包含日期和时间,另一列包含公司名称 - 问题是,它们直接相邻,例如
[2011-11-19 12:22:10Anderson-Henderson]
所以我最初的想法是使用以下代码:
split = df[['date_time', 'full_company_name']] = df['date_time/full_company_name'].str.split('/', n=1, expand=True)
返回 2 列,但其中一列包含所有信息,第二列没有值。 如何在初始数据框中的日期和公司名称之间插入“/”以利用这种拆分?还是有更简单的方法?
答案 0 :(得分:1)
我希望你找到更好的解决方案,但在你找到之前,我已经想出了一个有效的方法。
按“:”分割成多列,然后从名称列中取出秒数并将其移至日期列。
df[['date', 'hour', 'name']] = df["col"].str.split(':', expand=True)
df['date'] = df['date'] + ":" + df['hour'] + ":" + df['name'].str[:2]
df['name'] = df['name'].str[2:]
输出:
col date name
2011-11-19 12:22:10Anderson-Henderson 2011-11-19 12:22:10 Anderson-Henderson
答案 1 :(得分:1)
你也可以通过字符串切片来做到这一点:
所以首先使用astype()
方法和strip()
方法:
df['date_time/full_company_name']=df['date_time/full_company_name'].astype(str).str.strip('[]')
最后分配列:
df['date_time']=df['date_time/full_company_name'].str[1:20]
df['full_company_name']=df['date_time/full_company_name'].str[20:-1]
现在如果你打印 df
你会得到:
date_time/full_company_name date_time full_company_name
0 '2011-11-19 12:22:10Anderson-Henderson' 2011-11-19 12:22:10 Anderson-Henderson
1 '2011-11-19 12:22:10Anderson-Henderson' 2011-11-19 12:22:10 Anderson-Henderson