希望从所有Dataframe行

时间:2017-06-13 20:18:57

标签: python python-2.7 list dataframe list-comprehension

嗨,看起来人们感到困惑,所以我已经删除了我的尝试,只留下了问题的高度相关部分:

创建数据框的代码:

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] 

3 个答案:

答案 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并将所有列表或数组输出到所需的索引。