在恰好位于 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)))
该代码有效。
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)))
该代码有效。