我是新来的,请帮助我。假设我的df如下
words
0 peter
1 is
2 a
3 good
4 man
5 NaN
6 i
7 am
8 hungry
9 NaN
我想要一个在NaN值之前分组在一起的元组列表。输出应该是这样的。
[['peter','is','a','good','man'],['i','am','hungry']]
如何在python中执行此操作?
答案 0 :(得分:1)
不用担心。这是一种简单的方法:
lst = [list(df.words)[:5], list(df.words)[6:9]]
lst
>>>[['peter', 'is', 'a', 'good', 'man'], ['i', 'am', 'hungry']]
P.S。这些实际上不是元组,它们是列表中的列表。
答案 1 :(得分:1)
您可以尝试以下操作:
g = df.words.isna()
df[~g].groupby(g.cumsum()).words.apply(list).tolist()
# [['peter', 'is', 'a', 'good', 'man'], ['i', 'am', 'hungry']]
答案 2 :(得分:0)
尝试一下:
df = df[(df.words.fillna(0) != 0) == True]
a = df.groupby(df.index - np.arange(df.shape[0])).words.apply(list).to_list()
输出:
[['peter', 'is', 'a', 'good', 'man'],
['i', 'am', 'hungry']]
对于评论中的第二个问题,请尝试以下操作:
thelist = []
newlist = []
for x,y in df.words.fillna(0).iteritems():
if y == 0:
thelist.append(newlist)
newlist = []
else:
newlist.append(y)
thelist = [x for x in thelist if x != []]