使用多个列表,我们如何将我们的行来自哪个列表分配给新列

Using multiple lists how do we assign which list our row came from to a new column

我有几个英文单词表。如何在 DataFrame 中创建一个列,告诉我每个单词来自哪个列表。因此,将来随着更多单词从新列表中添加,我可以跟踪单词来自哪个列表?

list_1 = [['ant', 3] ['bat', 3] ['cat', 3]]

df = pd.DataFrame(list_1, columns = ['word', 'length'], dtype = str)

我如何将 list_2 数据添加到此数据框并确定数据来自 source 列下的哪些列表?

list_2 = [['rose', 4] ['tulip', 5] ['lilac', 5] ['daisy', 5]]

预期输出:

   source   word  length
0  list_1    ant       3
1  list_1    bat       3
2  list_1    cat       3
3  list_2   rose       4
4  list_2  tulip       5
5  list_2  lilac       5
6  list_2  daisy       5

以下是我的做法,使用字典来保存列表,并对数据框构造函数进行一点理解:

import pandas as pd

list_1 = ['ant', 'bat', 'cat']
list_2 = ['rose', 'tulip', 'lilac', 'daisy']

lists = {'list_1': list_1, 'list_2': list_2}


df = pd.DataFrame([(k,e,len(e)) for k,l in lists.items() for e in l],
                  columns=['source', 'word', 'length'])

输出:

   source   word  length
0  list_1    ant       3
1  list_1    bat       3
2  list_1    cat       3
3  list_2   rose       4
4  list_2  tulip       5
5  list_2  lilac       5
6  list_2  daisy       5