gpt4 book ai didi

python - 使用对每一行列的函数操作在 Pandas 数据框中创建新行的计算效率最高的方法?

转载 作者:行者123 更新时间:2023-12-04 16:24:06 25 4
gpt4 key购买 nike

假设我有一个数据框,其中两列包含整数

A  B 
3 3
4 6
6 4
7 4

我想创建一个从现有列创建新行的函数

def new_rows(row):
for idx in range (row['A']):
c = idx*row['B']
row['C'] = c
return row

所以生成的数据框将是

A.  B.   C 
3. 3. 0
3. 3. 3
3. 3. 6
4. 6 0
4. 6 6
4. 6 12
4. 6 18
6 4. 0
...
...
...

据我所知,pandas map 和 apply 可用于创建新列,但不能用于创建额外行

我能想到的最佳解决方案是使用 pandas iterrows 在迭代期间应用操作,将所有值保存到字典列表中,然后创建该列表的 pandas 数据框。

最佳答案

您可以使用 Index.repeat 以矢量化方式解决此问题在 df.A 和 groupby.cumcount 上生成范围并与 B 相乘:

def myf(data):
a = data.loc[data.index.repeat(df['A'])]
a['C'] = a.groupby("A").cumcount()*data['B']
return a.reset_index(drop=True)

print(myf(df))


A B C
0 3 3 0
1 3 3 3
2 3 3 6
3 4 6 0
4 4 6 6
5 4 6 12
6 4 6 18
7 6 4 0
8 6 4 4
9 6 4 8
10 6 4 12
11 6 4 16
12 6 4 20
13 7 4 0
14 7 4 4
15 7 4 8
16 7 4 12
17 7 4 16
18 7 4 20
19 7 4 24

关于python - 使用对每一行列的函数操作在 Pandas 数据框中创建新行的计算效率最高的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68698953/

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