在恰好位于 pd.series 的元组中的列表中提取列表

extracting a list within a list in a tuple which happens to be in a pd.series

x=     
[[(some text,[a]), (some text,[b]), (some text,[c]).........]]
   [[(some text,[d]), (some text,[e]), (some text,[f]).........]]
    [[(some text,[g]), (some text,[h]), (some text,[k]).........]]
    [[(some text,[i]), (some text,[x]), (some text,[y]).........]]
    [[(some text,[z]), (some text,[t]), (some text,[w]).........]]
    [[(some text,[t]), (some text,[g]), (some text,[u]).........]]

type(x)

pandas.core.series.Series

我想创建一个仅包含元组中列表值的系列,例如那些[a][u][w]

如何提取?谢谢。

更新:我意识到我表达问题的方式令人困惑。我现在改了。它更好地代表了我的问题。基本上,我需要逐行提取所有 [a][u][w]。这是标记化的文本数据,它们是句子中的单词。抱歉造成混淆。

使用:

x =[('a',['b']), ('c',['d']),('e',['f'])]
x1 = pd.Series(x)
x1.apply(lambda y: y[1])

结果:

根据您的评论:

temp = pd.Series(["[[('aaaa', ['bbbb']), ('cccc', ['ddddd'])]]", "[[('a',['b']), ('c',['d']), ('e',['f'])]]"])
temp.apply(lambda x: [x[1] for x in eval(x)[0]])

并且,结果:

这应该有效:

old = [[('a', ['b']), ('c', ['d']), ('e', ['f'])]]


def main():
    for item in old:
        for sub_item in item:
            yield sub_item[1]


for x in main():
    print(x)

给定系列 s,

s = pd.Series(x)

我们可以先取出第一个元素(因为每一行都是一个嵌套列表),explode 它并使用 str 访问器获取每个元组中的第二个元素;然后从单例列表中取出元素以获取原始数据。然后 groupby 索引,join 标记。

out = s.str[0].explode().str[1].str[0].groupby(level=0).apply(','.join)

输出:

0    a,b,c
1    d,e,f
2    g,h,k
3    i,x,y
4    z,t,w
5    t,g,u
s = pd.Series(x)

a=s.explode().explode().str[1].explode()

b=pd.DataFrame(a)

b.groupby(b.index)['column1'].apply(lambda x: ','.join(x.astype(str)))

该代码有效。