gpt4 book ai didi

python - py pandas 行迭代在重复的行 1-1 1-n 中添加新数据

转载 作者:行者123 更新时间:2023-11-28 22:16:50 25 4
gpt4 key购买 nike

我不知道怎么解释。但是让我们来看一个例子:
我有这本词典

dictData = {'movie_id':[11,12,13],'title':['filmA','filmB','filmC']}
dictFilm = {'filmA': ['pathA1\\ImageA1.jpg','pathA2\\ImageA2.jpg'],
'filmB': ['pathB1\\ImageB1.jpg','pathB2\\ImageB2.jpg'],
'filmC':['pathC1\\ImageC1.png','']}

然后根据这些,我将制作一个新数据

dfData = pd.DataFrame.from_dict(dictData)
dfFilm = pd.DataFrame.from_dict(dictFilm)

to_image_df = pd.DataFrame.from_dict({})

for i, row in dfFilm.iterrows():
to_image_df.at[i,'movie_id'] = int(dfData.at[i,'movie_id'])
to_image_df.at[i,'name'] = dfData.at[i,'title']
to_image_df.at[i,'path'] = dfFilm.at[i,'filmB']
print(to_image_df.head())

这给了我这个结果:

   movie_id   name                path
0 11.0 filmA pathB1\B1.jpg
1 12.0 filmB pathB2\ImageB2.jpg

但我想要这样的结果:

   movie_id   name                 path
0 11.0 filmA pathA1\\ImageA1.jpg
1 11.0 filmA pathA2\\ImageA2.jpg
2 12.0 filmB pathB2\ImageB1.jpg
3 12.0 filmB pathB2\ImageB2.jpg
4 13.0 filmC pathC1\ImageC1.png

最佳答案

映射并展平/展开。

df = pd.DataFrame(dictData)
v = df.title.map(dictFilm)

df = (pd.DataFrame(df.values.repeat(v.str.len(), axis=0), columns=df.columns)
.assign(path=list(chain.from_iterable(v)))
.replace('', np.nan)
.dropna(subset=['path']))

df
movie_id title path
0 11 filmA pathA1\ImageA1.jpg
1 11 filmA pathA2\ImageA2.jpg
2 12 filmB pathB1\ImageB1.jpg
3 12 filmB pathB2\ImageB2.jpg
4 13 filmC pathC1\ImageC1.png

关于python - py pandas 行迭代在重复的行 1-1 1-n 中添加新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51923493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com