0
所以我有一个数据框中的5列,我喜欢合并为现有列中的列表。数据框的子集低于:在同一个熊猫中的一个新列中合并几列DataFrame
loclize_indices_region i1 i2 i3 i4 i5
survey ID
59988455 NaN CIS NaN NaN NaN NaN
59988455 NaN CIS NaN NaN NaN Main Indices
59988455 NaN CIS NaN NaN NaN NaN
59988455 NaN NaN NaN Europe America Main Indices
59988455 NaN NaN NaN NaN NaN NaN
59988455 NaN CIS APAC Europe NaN NaN
59988455 NaN CIS NaN NaN NaN NaN
59988455 NaN CIS NaN NaN NaN Main Indices
59988455 NaN NaN NaN NaN NaN NaN
59988455 NaN NaN APAC NaN NaN Main Indices
59988455 NaN CIS NaN Europe America NaN
59988455 NaN NaN NaN NaN NaN Main Indices
59988455 NaN CIS NaN NaN NaN NaN
我后是通过合并列(I1,I2,I3,I4,I5),以填补'loclize_indices_region'
列,而不NaN
创建列表。下面的最终结果应该什么样子:
survey ID loclize_indices_region
59988455 [CIS]
59988455 [CIS, Main Indices]
59988455 [CIS]
59988455 [Europe, America, Main Indices]
59988455 []
59988455 [CIS, APAC, Europe]
59988455 [CIS]
59988455 [CIS, Main Indices]
59988455 []
59988455 [APAC, Main Indices]
59988455 [CIS, Europe, America]
59988455 [Main Indices]
下面的代码完全正常,但我需要建立一个功能,将做到这一点对我来说,而不是列的每个块,我想合并创建的lambda函数。 (我仍然有我想申请对他们同样的逻辑其他类似的栏目。)
data['loclize_indices_region'] = data.apply(lambda x: [x['i1'], x['i2'], x['i3'], x['i4'], x['i5']], axis=1)
data['loclize_indices_region'] = data.loclize_indices_region.map(lambda x: [i for i in x if str(i) != 'nan'], 1)
我试着写下面的函数,打算data.apply()
使用,但由于某种原因它不工作:
def merge_cols(series, *cols):
list = [series[i] for i in cols]
list = [ l for l in list if l !='nan']
return list
list [i1, i2, i3, i4, i5]
data['loclize_indices_region'] = data.apply(merge_cols(*list), 1)
我得到下面的错误,而不是
Traceback (most recent call last):
File "C:/Users/u8003461/SkyDrive/Python/Eikon Russian Survey/data_discovery.py", line 26, in <module>
list [i1, i2, i3, i4, i5]
NameError: name 'i1' is not defined
任何想法如何做免费这个操作错误?
感谢, 莫
感谢您的帮助,它精美的作品。你会介意使用'df.loc'吗?它在上面的代码中究竟扮演什么角色? – mobaset 2014-12-07 06:04:13
建议使用'.loc'属性作为基于主标签的访问方法,以避免链接分配出现问题。因此,即使需求可能不像上述虚拟示例中那样明显(这是我想的习惯问题),使用它也没有什么坏处。您可以在[官方文档](http://pandas.pydata.org/pandas-docs/stable/indexing.html#selection-by-label)中找到关于它的更多信息,包括不使用'时的示例。 loc'会给你一个问题。 – Primer 2014-12-07 07:40:53