这是对此问题的跟进:Extract non- empty values from the regex array output in python
我有一个DF,其列“col”和“col1”类型为'numpy.ndarray',看起来像:
null
我希望输出为:
col col1
[[5, , , ,]] [qwe,ret,der,po]
[[, 4, , ,][, , 5, ]] [fgk,hfrt]
[] []
[[, , , 9]] [test]
请注意列“col”,第二行最多包含输出中的两个条目。 我尝试了上面链接中提供的解决方案,但它给出了ValueError“具有多个元素的数组的真值是不明确的。使用a.any()或a.all()”
由于
编辑: 我的DF的词典形式,列“col”:
col col1
5 qwe,ret,der,po
5 fgk,hfrt
0 NOT FOUND
9 test
答案 0 :(得分:0)
尝试以下方法:
import pandas as pd
def parse_nested_max(xss):
return max(
(max((int(x) for x in xs if x), default=0) for xs in xss),
default=0
)
df['col'] = df.col.apply(parse_nested_max)
df['col1'] = df.col1.apply(lambda s: ','.join(s) or 'NOT FOUND')
这假设第一列是字符串类型的2-dim数组,第二列是字符串类型的1-dim数组。
对于第一列,请执行以下操作:
''
元素并将其余部分转换为int
max
max([]) == 0
default=0
来解释df
第三行中空虚的可能性。对于第二列,利用bool(','.join([])) == False
。
最后提示:如果您的数据框架易于重新创建,您将获得更好的反馈。在定义df.to_dict()
时,请尝试使用df
并在输出源中嵌入输出。