所以我正在研究一些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
你得到一个如下所示的数据框:
后续步骤要求数据框中的所有元素都是元组。
我试过这个:
df.replace({None : (None,None)})
虽然它似乎运行没有错误,但它没有进行任何替换。 任何想法如何实现这一目标?
答案 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)))