gpt4 book ai didi

python - pandas - 通过添加另一个级别来扩展 DataFrame

转载 作者:行者123 更新时间:2023-11-30 23:31:49 25 4
gpt4 key购买 nike

让我们举一个 DataFrame 示例

import pandas as pd
df = pd.DataFrame(['a','b','c','d'],columns=['A'])

现在,我想做的是添加另外两列(让我们将它们命名为 BC),其中的数值将由某个范围定义 - 让我们假设 B 在 range(0,3) 中,C 在 range(10,12) 中。

应扩展初始数据帧,以便对于 A 列中的每个值,都有 BC 值的所有可能组合可用 - 所以最终的数据框应如下所示:

    A  B  C
0 a 0 10
1 b 0 10
2 c 0 10
3 d 0 10
4 a 1 10
5 b 1 10
6 c 1 10
7 d 1 10
8 a 2 10
9 b 2 10
10 c 2 10
11 d 2 10
12 a 0 11
13 b 0 11
14 c 0 11
15 d 0 11
16 a 1 11
17 b 1 11
18 c 1 11
19 d 1 11
20 a 2 11
21 b 2 11
22 c 2 11
23 d 2 11

实现这一目标的最佳解决方案是什么?

最佳答案

这个叫 cross product or cartesian product 。你可以这样做:

>>> dfA = pd.DataFrame(['a','b','c'],columns=['A'])
>>> dfB = pd.DataFrame(range(3),columns=['B'])
>>> dfA['key'] = 1
>>> dfB['key'] = 1
>>> pd.merge(dfB, dfA, on='key').ix[:, ('A','B')]
A B
0 a 0
1 b 0
2 c 0
3 a 1
4 b 1
5 c 1
6 a 2
7 b 2
8 c 2

实际上,奇怪的是无法将 how='cross' 传递给合并或连接方法。可能开发人员决定不经常使用它。

关于python - pandas - 通过添加另一个级别来扩展 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19684765/

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