Python 如何优化代码以生成基于列值垂直堆叠的列表?

Python 如何优化代码以生成基于列值垂直堆叠的列表?,python,string,pandas,Python,String,Pandas,我有一个数据帧测试,看起来 Year Month TAGS 2019 5 A, B 2019 5 A, C 2019 5 A 2019 5 2019 5 B, C, D 2019 5 C, E 我想得到一个标签列表,当我用逗号分割标签字符串时,它看起来像是垂直堆叠的 A B A C A B C D C E 为了得到标签列表,我使用了2个For循环 check=[] for j in range(len(test_df)

我有一个数据帧测试,看起来

Year    Month   TAGS
2019    5   A, B
2019    5   A, C
2019    5   A
2019    5   
2019    5   B, C, D
2019    5   C, E
我想得到一个标签列表,当我用逗号分割标签字符串时,它看起来像是垂直堆叠的

A
B
A
C
A
B
C
D
C
E
为了得到标签列表,我使用了2个For循环

check=[]

for j in range(len(test_df)): 

  for i in range(len(test_df['TAGS'][j].split(', '))):

      check.append(test_df['TAGS'][j].split(', ')[i])

有没有更好的方法来获取标记列表而不使用2 For循环。

IIUC,您可以首先在上拆分标记列:

然后调整中的代码以获得最终输出:

df["TAGS"].str.split(", ").apply(pd.Series).stack().reset_index(drop=True)
#0    A
#1    B
#2    A
#3    C
#4    A
#5    B
#6    C
#7    D
#8    C
#9    E

您的标记是单个字符还是用逗号分隔的?您是否尝试过测试_df['Tags']。ToList仍在迭代,但如果s不是None,请尝试itertools.chain.from_iterables.split',用于df.Tags中的s。应该比你现在的方法快,你能验证一下吗。你有一系列的列表['a','B']还是一系列的字符串'a,B'?如果他们是名单的话,那就是来自伊特拉布列夫的pd.Seriescain。Tags@arajshree,如果我测试了_df['TAGS'].tolist,我得到的是A,B\n A,C\n A\n B,C,D\n C,E,但我希望得到A\n B\n A\n C\n A\n B\n C\n D\n C\n E
df["TAGS"].str.split(", ").apply(pd.Series).stack().reset_index(drop=True)
#0    A
#1    B
#2    A
#3    C
#4    A
#5    B
#6    C
#7    D
#8    C
#9    E