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