熊猫从数据框中的一列中提取部分字符串并将其存储在一个新列中
Posted
技术标签:
【中文标题】熊猫从数据框中的一列中提取部分字符串并将其存储在一个新列中【英文标题】:Pandas extract part of string form a column in a dataframe and store it in a new column 【发布时间】:2022-01-06 07:32:01 【问题描述】:我有下面的代码来创建一个数据框
import pandas as pd
df = 'Connection':['Home 10Mbps','Broadband 5 Mbps','128 Kbps Internet','Discounted 512Kbps 2 years contract']
df = pd.DataFrame (df)
df
我需要一种仅从“连接”列中提取带宽并将结果存储在名为“带宽”的新列中的方法,如下所示:
带宽
10 Mbps
5 Mbps
128 Kbps
512 Kbps
【问题讨论】:
您的数据不遵循某种模式,因此无法解析或至少难以解析。既然已经有了数据,为什么不在初始化dataframe的时候单独放到一列呢? 感谢您的回复,其实这是一个300 K记录数据集的一部分,我需要在清理和组织数据的过程中这样做 【参考方案1】:确保使用所有可能的格式填写列表
lst = ['10Mbps', '10 Mbps', '5 Mbps', '128 Kbps', '512Kbps', '512 Kbps']
for i in lst:
df.loc[df['Connection'].str.contains(i), 'bandwidth'] = i
lst1 = []
for j in df.bandwidth:
if " " not in j:
lst1.append((re.sub("[A-Za-z]+", lambda ele: " " + ele[0] + " ", j)[:-1]))
else:
lst1.append(j)
df['bandwidth']=lst1
# output
Connection bandwidth
Home 10Mbps 10 Mbps
Broadband 5 Mbps 5 Mbps
128 Kbps Internet 128 Kbps
Discounted 512Kbps 2 years contract 512 Kbps
【讨论】:
谢谢,应该这样做,这个数据是我正在处理的 300 K 记录的一部分,我仍然需要解决如何统一这些值;数字和带宽单位之间有空格或没有空格,您知道如何做到这一点吗? 如果你是这个意思,我编辑了回复 完美,谢谢 不客气,如果一切正常,请接受答案。以上是关于熊猫从数据框中的一列中提取部分字符串并将其存储在一个新列中的主要内容,如果未能解决你的问题,请参考以下文章
如何在 python 的另一列中的字符串值中从数据框中的一列中搜索字符串?