gpt4 book ai didi

python - 从 python 中的正则表达式数组输出中提取非空值

转载 作者:行者123 更新时间:2023-12-01 03:58:05 25 4
gpt4 key购买 nike

我有一个 numpy.ndarray 类型的列,如下所示:

         col
['','','5','']
['','8']
['6','','']
['7']
[]
['5']

我想要这样的输出:

         col
5
8
6
7
0
5

我怎样才能在 python 中做到这一点。非常感谢任何帮助。

最佳答案

要将数据转换为数值,您可以使用:

import numpy as np
import pandas as pd
data = list(map(np.array, [ ['','','5',''], ['','8'], ['6','',''], ['7'], [], ['5']]))
df = pd.DataFrame({'col': data})
df['col'] = pd.to_numeric(df['col'].str.join('')).fillna(0).astype(int)
print(df)

产量

   col
0 5
1 8
2 6
3 7
4 0
5 5
<小时/>

要将数据转换为字符串,请使用:

df['col'] = df['col'].str.join('').replace('', '0')

结果看起来相同,但列的数据类型是 object,因为值是字符串。

<小时/>

如果某些行中有多个数字并且您希望选择最大的,那么你必须循环遍历每行中的每个项目,将每个字符串转换为一个数值并取最大值:

import numpy as np
import pandas as pd
data = list(map(np.array, [ ['','','5','6'], ['','8'], ['6','',''], ['7'], [], ['5']]))
df = pd.DataFrame({'col': data})
df['col'] = [max([int(xi) if xi else 0 for xi in x] or [0]) for x in df['col']]
print(df)

产量

   col
0 6 # <-- note ['','','5','6'] was converted to 6
1 8
2 6
3 7
4 0
5 5
<小时/>

对于 0.17 之前的 pandas 版本,您可以使用 df.convert_objects 代替:

import numpy as np
import pandas as pd
data = list(map(np.array, [ ['','','5',''], ['','8'], ['6','',''], ['7'], [], ['5']]))
df = pd.DataFrame({'col': data})
df['col'] = df['col'].str.join('').replace('', '0')
df = df.convert_objects(convert_numeric=True)

关于python - 从 python 中的正则表达式数组输出中提取非空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37099920/

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