请帮助我。如何在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
谢谢!
答案 0 :(得分:1)
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