请帮助我。如何在数据帧中创建新列并联接数据帧中每个可用索引的值列表?
例如,我有一个带有索引值的 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