将一列字符串重新格式化为两个 [关闭]
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”