在Pandas中的DataFrame中为每个索引值添加一个列表

时间:2018-06-16 13:11:43

标签: python pandas dataframe

请帮助我。如何在DataFrame中创建新列并加入DataFrame中可用的每个索引的值列表?

例如,我有一个带索引值的df:

i1
i2
i3

和一个清单:

ls = ['asd', 'qwe', 'zxc']

我想将df更新为:

i1 asd
i1 qwe
i1 zxc
i2 asd
i2 qwe
i2 zxc
i3 asd
i3 qwe
i3 zxc

谢谢!

2 个答案:

答案 0 :(得分:1)

使用itertools.product

from itertools import product

df = pd.DataFrame(index=['i1', 'i2', 'i3'])
ls = ['asd', 'qwe', 'zxc']

res = pd.DataFrame(list(product(df.index, ls)))

print(res)

    0    1
0  i1  asd
1  i1  qwe
2  i1  zxc
3  i2  asd
4  i2  qwe
5  i2  zxc
6  i3  asd
7  i3  qwe
8  i3  zxc

答案 1 :(得分:1)

您只是在照顾cartesian product,而list comprehension可以为您完成工作(无需其他套餐)。

import pandas as pd
index = ['i1', 'i2', 'i3']
ls = ['asd', 'qwe', 'zxc']
pd.DataFrame([ [i, j] for i in df.id for j in df.ls], columns = ["id", "ls"])
    id  ls
0   i1  asd
1   i1  qwe
2   i1  zxc
3   i2  asd
4   i2  qwe
5   i2  zxc
6   i3  asd
7   i3  qwe
8   i3  zxc