gpt4 book ai didi

python-3.x - 从 Pandas 数据框中仅提取数字和字符串

转载 作者:行者123 更新时间:2023-12-04 00:58:51 25 4
gpt4 key购买 nike

我试图只提取两个不同数据帧中的数字和字符串。我正在使用正则表达式来提取数字和字符串。

import pandas as pd

df_num = pd.DataFrame({
'Colors': ['lila1.5', 'rosa2.5', 'gelb3.5', 'grün4', 'rot5', 'schwarz6', 'grau7', 'weiß8', 'braun9', 'hellblau10'],
'Animals': ['hu11nd', '12welpe', '13katze', 's14chlange', 'vo15gel', '16papagei', 'ku17h', '18ziege', '19pferd',
'esel20']
})

for column in df_num.columns:
df_num[column] = df_num[column].str.extract('(\d+)').astype(float)

print(df_num)

我也尝试过使用 '([\d+][\d+\.\d+])' 和 '([\d+\.\d+])'

在这里我得到了输出,但不是我所期望的。虽然我期待 float ,但我没有得到 1.5 或 2.5。

我得到类似下图的东西:

enter image description here

df_str = pd.DataFrame({
'Colors': ['lila1.5', 'rosa2.5', 'gelb3', 'grün4', 'rot5', 'schwarz6', 'grau7', 'weiß8', 'braun9', 'hellblau10'],
'Animals': ['hu11nd', '12welpe', '13katze', 's14chlange', 'vo15gel', '16papagei', 'ku17h', '18ziege', '19pferd',
'esel20']
})

for column in df_str.columns:
df_str[column] = df_str[column].str.extract('([a-zA-Z]+)')

print(df_str)

在这种情况下,当数字位于末尾或开头时,我会得到字符串,但如果数字放在中间或任何其他位置,那么我期望我不会得到结果。当前输出如下图:

enter image description here

我认为我的正则表达式不正确。哪个是解决这些问题的正确正则表达式?或者有没有其他方法可以只提取 Pandas 数据框中的数字和字符串?

最佳答案

您的代码在正确的轨道上,您只需要考虑小数和整数的可能性:

df_num['colors_num'] = df_num.Colors.str.extract(r'(\d+[.\d]*)')
df_num['animals_num'] = df_num.Animals.str.extract(r'(\d+[.\d]*)')
df_num['colors_str'] = df_num.Colors.str.replace(r'(\d+[.\d]*)','')
df_num['animals_text'] = df_num.Animals.str.replace(r'(\d+[.\d]*)','')


Colors Animals colors_num animals_num colors_str animals_text
0 lila1.5 hu11nd 1.5 11 lila hund
1 rosa2.5 12welpe 2.5 12 rosa welpe
2 gelb3.5 13katze 3.5 13 gelb katze
3 grün4 s14chlange 4 14 grün schlange
4 rot5 vo15gel 5 15 rot vogel
5 schwarz6 16papagei 6 16 schwarz papagei
6 grau7 ku17h 7 17 grau kuh
7 weiß8 18ziege 8 18 weiß ziege
8 braun9 19pferd 9 19 braun pferd
9 hellblau10 esel20 10 20 hellblau esel

关于python-3.x - 从 Pandas 数据框中仅提取数字和字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60295698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com