gpt4 book ai didi

python - 如何在 Pandas 中拥有一列完整的列表

转载 作者:行者123 更新时间:2023-12-05 01:55:21 25 4
gpt4 key购买 nike

我有一个 Pandas 数据框如下

fruit_name | color
-----------+-------
apple | red
banana | yellow
orange | orange

使用这个数据框,我想创建一个新的数据框,如下所示

name  |  fruit
------+-------
Ben | ['apple', 'banana', 'orange']
Alex | ['apple', 'banana', 'orange']
Jude | ['apple', 'banana', 'orange']
May | ['apple', 'banana', 'orange']
...

为此,我尝试了以下方法

new_df = pd.DataFrame(columns=['name', 'fruit']
new_df['name'] = students['name']
new_df['fruit'] = fruits['fruits_name'].to_list()

我收到以下错误信息

ValueError: Length of values (3) does not match length of index (10)

我想要我的最终结果如下

name  |  fruit
------+-------
Ben | apple
Ben | banana
Ben | orange
Alex | apple
Alex | banana
Alex | orange
...

我想一旦我有了一列列表,我就会使用 explode 函数。但是我无法获取带有列表列的数据框。

最佳答案

你要找的实际上是一个cross merge ,可从 Pandas 1.2.0+ 获得:

new_df = students[['name']].merge(fruits[['fruit_name']], how='cross')

输出:

    name fruit_name
0 Ben apple
1 Ben banana
2 Ben orange
3 Alex apple
4 Alex banana
5 Alex orange
6 Jude apple
7 Jude banana
8 Jude orange
9 May apple
10 May banana
11 May orange

注意如果您坚持使用早期版本,请使用相同的 key 进行合并:

new_df = (students[['name']].assign(key=1)
.merge(fruits[['fruit_name']].assign(key=1), on='key')
.drop('key', axis=1)
)

关于python - 如何在 Pandas 中拥有一列完整的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70270252/

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