分隔列中的相邻值以拆分它们 [Python - Pandas]

时间:2021-04-23 13:05:59

标签: python pandas

在我的数据框中,我有一列 [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 列,但其中一列包含所有信息,第二列没有值。 如何在初始数据框中的日期和公司名称之间插入“/”以利用这种拆分?还是有更简单的方法?

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