将一列字符串重新格式化为两个 [关闭]

Posted

技术标签:

【中文标题】将一列字符串重新格式化为两个 [关闭]【英文标题】:Reformat a column of strings into two [closed] 【发布时间】:2022-01-23 17:52:52 【问题描述】:

我需要将一列数据转换成两列,基本格式如下:

df=pd.dataframe(data='source':
 ['description_1. https://www.link1.com/',
 'description_2. https://www.link2.com/ description_3. https://www.link3.com/ description_4. https://www.link4.com/',
 'description_5. https://www.link5.com/'])

>df

| source   |
| -------- |
|description_1. https://www.link1.com/|
|description_2. https://www.link2.com/ description_3. https://www.link3.com/ description_4. https://www.link4.com/|
|description_5. https://www.link5.com/|

我需要的格式是:

df=pd.dataframe('description':
 ['description_1',
 'description_2 / description_3 / description_4',
 'description_5'],
 'urls':
 ['https://www.link1.com/',
 'https://www.link2.com/ / https://www.link3.com/ / https://www.link4.com/',
 'https://www.link5.com/']

>df

])
| description | urls |
| -------- | -------------- |
|description_1|https://www.link1.com/|
|description_2 / description_3 / description_4|https://www.link2.com/ / https://www.link3.com/ / https://www.link4.com/|
|description_5|https://www.link5.com/|

几天来我一直在集思广益并尝试不同的东西,但没有任何效果,我即将放弃并手动执行此操作,但这不是解决此问题的最合适的解决方案。

【问题讨论】:

第二行是什么?需要吗?还是只是在打印过程中添加?您可以添加用于创建数据框的代码吗? 本来是一张表,但是第二张的行太长了,有人编辑成代码块,我给df加代码 【参考方案1】:

您的问题有点令人困惑,但我想我理解了这个想法。假设您有一个像第一个包含单个字符串的 DataFrame。像这样的东西应该工作。我认为使用正则表达式可能会更优雅。然而:

# Extracting link and description within the frist dataframe
df['source'] = df['source'].apply(lambda x: x.split('https'))
# Using a second DataFrame to convert the list in source into columns
df2 = pd.DataFrame(df['description'].to_list(), columns=['description', 'link'])
# Adding the https again, which gets lost using split
df2['link'] = df2.apply(lambda x: 'https' + x['link'], axis=1)

【讨论】:

以上是关于将一列字符串重新格式化为两个 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何将一串数字“12345678”格式化为“1,23,45,678”

将文本文件重新格式化为一行字符串[重复]

如何将一长串数字转换为格式化的小时数

将两组十列重新排列成两列[关闭]

如何将一列数据框转换为具有json格式值的分布列(PYTHON)

将字符串数字格式化为双变量,小数点后有两个数字