在 Pandas 的数据帧中为每个索引值添加一个列表



请帮助我。如何在数据帧中创建新列并联接数据帧中每个可用索引的值列表?

例如,我有一个带有索引值的 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

谢谢!

使用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

你只是在照顾一个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

最新更新