在lis中转换列的行

2024-04-24 20:38:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个表,由两列组成。你知道吗

   |product_id   |Bigram
   ---------------------------------------------------------------------
   |111          |[('111','987'),('987','741'),('12','111')]
   |987          |[('987','1232'),('1232','987')
   |654          |('654,12'),('12,324'),('24,465')]
   |321          |[('321','741')]
   |324          |[('324','654'),('654','862'),('862','324')]
   |123          |[('123','98'),('12','123')]

我想从Bigram列创建一个列表L,这样,每一行中以及跨每一行的所有值都会附加到列表中。你知道吗

例如。我的输出应该是。你知道吗

L = [(['987','1232'],['1232','987'],['654,12'],['12,324'],['24,465'],
['321','741'],............['123','98'],['12','123'])]

有什么办法吗?使用一些for循环?你知道吗


Tags: id列表forproductbigram办法
1条回答
网友
1楼 · 发布于 2024-04-24 20:38:35

我想你需要^{}

L = df.Bigram.tolist()

或:

L = list(df.Bigram)

编辑:

问题是列Bigram中的值是字符串,因此首先需要通过ast转换为元组的list

from ast import literal_eval
from  itertools import chain

df.Bigram = df.Bigram.apply(literal_eval)
print (df)
   product_id                                Bigram
0         111   [(111, 987), (987, 741), (12, 111)]
1         987            [(987, 1232), (1232, 987)]
2         654     [(654, 12), (12, 324), (24, 465)]
3         321                          [(321, 741)]
4         324  [(324, 654), (654, 862), (862, 324)]
5         123                [(123, 98), (12, 123)]

L = [tuple([list(x) for x in chain.from_iterable(df.Bigram)])]
print (L)
[(['111', '987'], ['987', '741'], ['12', '111'], 
  ['987', '1232'], ['1232', '987'], ['654', '12'], 
  ['12', '324'], ['24', '465'], ['321', '741'],
  ['324', '654'], ['654', '862'], ['862', '324'], 
  ['123', '98'], ['12', '123'])]

相关问题 更多 >