在pandas中,如何从另一列的一部分创建一个新列,并遵守一个条件?

2024-05-16 12:14:19 发布

您现在位置:Python中文网/ 问答频道 /正文

在python 3和pandas中,我有数据帧:

lista_projetos.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 59 entries, 0 to 58
Data columns (total 14 columns):
n_projeto                             59 non-null object
autor                                 59 non-null object
ementa                                59 non-null object
resumo                                59 non-null object
votacao_nominal                       59 non-null object
votacao_nominal_alternativa_emenda    59 non-null object
link_votacao                          0 non-null float64
observacao                            0 non-null float64
link_emenda                           0 non-null float64
indicado_por                          59 non-null object
entidade_que_avalia                   59 non-null object
favoravel_desfavoravel_indiferente    59 non-null object
explicacao                            59 non-null object
link_projeto                          59 non-null object
dtypes: float64(3), object(11)
memory usage: 6.5+ KB

“link_projeto”列包含URL,始终采用以下格式:

http://www.camara.gov.br/proposicoesWeb/fichadetramitacao?idProposicao=2171854

http://www.camara.gov.br/proposicoesWeb/fichadetramitacao?idProposicao=2147513

http://www.camara.gov.br/proposicoesWeb/fichadetramitacao?idProposicao=2168253

我想从“link_projeto”列创建一个新列。所以:总是在“=”符号后选择最后一个数字

像这样:

new_column
2171854
2147513
2168253

请问,有没有办法从另一列的一部分创建一个新列


Tags: brhttpobjectwwwlinknullgovnon
1条回答
网友
1楼 · 发布于 2024-05-16 12:14:19

首先,您将如何在单个值上执行此操作

>>> link = "http://www.camara.gov.br/proposicoesWeb/fichadetramitacao?idProposicao=2171854"
>>> link.split("=", 1)[1]
'2171854'

但是splitstr对象上的方法;如何将其应用于充满字符串的列?简单:列(系列和索引)有一个^{} attribute正好用于此目的:

df.link_projecto.str.split("=", 1)

但是split不仅仅返回字符串,它还返回字符串列表。我们怎么得到最后一个

Splitting and Replacing Strings中所述,您只需再次访问str并对其编制索引:

df.link_projecto.str.split("=", 1).str[1]

因此:

df["new_column"] = df.link_projecto.str.split("=", 1).str[1]

相关问题 更多 >