使用None的

时间:2017-12-05 12:10:41

标签: python pandas

所以我正在研究一些NLP应用程序的代码。 Stackoverflow上的interesting solution从不等长度的列表中创建数据帧。使用输入中的元组从该解决方案中获取代码:

import pandas as pd
import itertools

aa = [('aa1',4), ('aa2',3), ('aa3',2), ('aa4',2), ('aa5',1)]
bb = [('bb1',8), ('bb2',6), ('bb3',4), ('bb4',4)]
cc = [('cc1',3), ('cc2',2), ('cc3',1)]
nest = [aa, bb, cc]

df = pd.DataFrame((_ for _ in itertools.zip_longest(*nest)), columns=['aa', 'bb', 'cc'])
df 

你得到一个如下所示的数据框:

enter image description here

后续步骤要求数据框中的所有元素都是元组。

我试过这个:

df.replace({None : (None,None)})

虽然它似乎运行没有错误,但它没有进行任何替换。 任何想法如何实现这一目标?

2 个答案:

答案 0 :(得分:2)

看起来这可行,但我不知道为什么。

df = df.where(df!=[None], '(None, None)')

使用" np.nan"可能更好。比没有"没有"在DataFrame中,可以使用fillna

答案 1 :(得分:2)

执行此操作的一种方法是使用pandas.DataFrame.apply()pandas.Series.map(),如下所示:

df.apply(lambda ds: ds.map(lambda x: x if x != None else (None, None)))