嗨,看起来人们感到困惑,所以我已经删除了我的尝试,只留下了问题的高度相关部分:
创建数据框的代码:
Sample = [{'account': 'Jones LLC', 'Jan': 150, 'Feb': 200, 'Mar': [.332, .326, .329]},
{'account': 'Alpha Co', 'Jan': 200, 'Feb': 210, 'Mar': [[.234, .246], None]},
{'account': 'Blue Inc', 'Jan': 50, 'Feb': 90, 'Mar': [[.23], [.745, .398, .923], None] }]
df = pd.DataFrame(Sample)
数据框可视化:
df:
account Jan Feb Mar
Jones LLC | 150 | 200 | [.332, .326, .329]
Alpha Co | 200 | 210 | [[.234, .246], None]
Blue Inc | 50 | 90 | [[.23], [.745, .398, .923], None]
我需要一个可以应用于df的函数来从df ['Mar']中删除'None'值,目的是返回:
df:
account Jan Feb Mar
Jones LLC | 150 | 200 | [.332, .326, .329]
Alpha Co | 200 | 210 | [.234, .246]
Blue Inc | 50 | 90 | [.23], [.745, .398, .923]
答案 0 :(得分:1)
您可以嵌套列表推导:
df['Mar'] = [[x for x in inner_list if x is not None] for inner_list in df['Mar']]
您还可以使用filter
过滤掉None
值
df['Mar'] = [list(filter(lambda x: x is None, inner_list)) for inner_list in df['Mar']]
答案 1 :(得分:1)
@ user3080953几乎解决了这个问题,但我想为后人做一个完整的答案:
df['New'] = [[[x for x in inner_list if x is not None]] for inner_list in df['Mar']]
这将创建一个“无”的新列。然后我可以删除df ['Mar']
全部谢谢!
答案 2 :(得分:0)
假设mylist1
是一个numpy数组,你可以做
mylist1[mylist1 != None]
获得您想要的价值。但是,如果您希望在相同的索引处切割多个数组或列表,则可以使用上面的算法调整enumerate
并将所有列表或数组输出到所需的索引。