Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从字符串列中提取要列出的每个数字?_Python_Pandas_Dataframe - Fatal编程技术网

Python 如何从字符串列中提取要列出的每个数字?

Python 如何从字符串列中提取要列出的每个数字?,python,pandas,dataframe,Python,Pandas,Dataframe,怎么做 我有一个数据框,看起来像: A列 11.2一些文本17一些文本21 一些文本25.2 4.1一些文本53 17 78 121.1 bla bla bla 14一些文字 12一些文本 我需要将这一行转移到单独的列表中: listA[0]=11.2 listA[1]=17 listA[2]=21 listB[0]=25.2 listB[1]=4.1 listB[2]=53 listB[3]=17 listB[4]=78 listC[0]=121.1 listC[1]=14 listD[0]=

怎么做

我有一个数据框,看起来像:

A列 11.2一些文本17一些文本21 一些文本25.2 4.1一些文本53 17 78 121.1 bla bla bla 14一些文字 12一些文本 我需要将这一行转移到单独的列表中:

listA[0]=11.2 listA[1]=17 listA[2]=21 listB[0]=25.2 listB[1]=4.1 listB[2]=53 listB[3]=17 listB[4]=78 listC[0]=121.1 listC[1]=14 listD[0]=12 您将得到该列中每一行的列表。这将是字符串,但你可以转换为浮动,但你想之后

您将得到该列中每一行的列表。它将是字符串,但您可以根据需要将其转换为float。

您可以使用re查找所有出现的整数或float数字

df['Column\u A'].applylambda x:re.findallr[-+]?\d*\.\d+\d+,x.tolist 输出:

[['11.2', '17', '21'], ['25.2', '4.1', '53', '17', '78'], ['121.1', '14'], ['12']] 如果需要,可以键入cast-themes-to-float/int检查提取的字符串是否存在。在他们身上,类似这样的东西:

df['Column\u A'].applylambda x:re.findallr[-+]?\d*.\d+\d+,x.maplambda x:[inti if.''不在i else floati中,用于i in x].tolist 输出:

[[11.2, 17, 21], [25.2, 4.1, 53, 17, 78], [121.1, 14], [12]] 正如@Uts所指出的,我们可以通过Series.str直接调用findall,如下所示:

listA,listB,listC,listD=df.Column\u A.str.findallr[-+]?\d*\.\d+\d+ 您可以使用re查找整数或浮点数的所有匹配项

df['Column\u A'].applylambda x:re.findallr[-+]?\d*\.\d+\d+,x.tolist 输出:

[['11.2', '17', '21'], ['25.2', '4.1', '53', '17', '78'], ['121.1', '14'], ['12']] 如果需要,可以键入cast-themes-to-float/int检查提取的字符串是否存在。在他们身上,类似这样的东西:

df['Column\u A'].applylambda x:re.findallr[-+]?\d*.\d+\d+,x.maplambda x:[inti if.''不在i else floati中,用于i in x].tolist 输出:

[[11.2, 17, 21], [25.2, 4.1, 53, 17, 78], [121.1, 14], [12]] 正如@Uts所指出的,我们可以通过Series.str直接调用findall,如下所示:

listA,listB,listC,listD=df.Column\u A.str.findallr[-+]?\d*\.\d+\d+
那么,如何单独使用每个列表呢?我需要分开使用。我的意思是,我需要像ListA、ListB、ListC、ListDY这样的单独列表,您可以在一个列表中获得此输出,例如结果和结果[0],结果[1]。。。将在第一行、第二行等处给出匹配的数字。。。。i、 e.结果[0]将给出[11.2,17,21],结果[0][0]将给出11。2@ThePyGuy-apply和to_list函数可能不是必需的。listA,listB,listC,listD=df.Column\u A.str.findallr[-+]?\d*\.\d+\d++@Uts,是的,我们可以通过系列直接调用findall。str@Uts,我在回答中也补充了这一点,谢谢你的建议,如何分别使用每个列表?我需要分开使用。我的意思是,我需要像ListA、ListB、ListC、ListDY这样的单独列表,您可以在一个列表中获得此输出,例如结果和结果[0],结果[1]。。。将在第一行、第二行等处给出匹配的数字。。。。i、 e.结果[0]将给出[11.2,17,21],结果[0][0]将给出11。2@ThePyGuy-apply和to_list函数可能不是必需的。listA,listB,listC,listD=df.Column\u A.str.findallr[-+]?\d*\.\d+\d++@Uts,是的,我们可以通过系列直接调用findall。str@Uts,我在回答中也加了一句,谢谢你的建议
[re.findall(r"\d+?\.?\d*", x) for x in Column_A]