gpt4 book ai didi

python - 如何使用python拆分Dataframe中的值

转载 作者:太空宇宙 更新时间:2023-11-04 00:11:09 24 4
gpt4 key购买 nike

我的数据框:

df
Object quantity
A 3
B 4
C 10
D 11

我想要的结果:

df
Object quantity
A 3
B 4
C 4
C 4
C 2
D 4
D 4
D 3

我的目标是拆分存储在 column2“quantity”中的值,使其为 4 或小于 4。

我可以使用哪种方法来解决这个问题?任何建议将不胜感激。

最佳答案

像这样的东西可以工作。对于数量大于 4 的每个组,应用一个函数进行行拆分并存储到临时数据框中,然后将所有内容组合在一起以获得所需的输出:

df = pd.DataFrame({'idx': ['A', 'B', 'C', 'D'],
'quantity': [3, 4, 10, 11]})

def split_quant(df):
quantities = ([4]*(df['quantity'].iat[0] // 4)) + [df['quantity'].iat[0] % 4]

temp = pd.DataFrame({'idx': df['idx'].iat[0],
'quantity': quantities
}, index=range(len(quantities)))
temp = temp[temp['quantity']!=0]

return temp

df_split = df[df['quantity'] > 4].groupby('idx').apply(split_quant)

output = df[df['quantity'] <= 4].append(df_split).reset_index(drop=True)

writer = pd.ExcelWriter('output.xlsx')
output.to_excel(writer, 'Sheet1', index=False)
writer.save()

以上将为您提供以下输出数据框:

  idx  quantity
0 A 3
1 B 4
2 C 4
3 C 4
4 C 2
5 D 4
6 D 4
7 D 3

编辑:

我冒昧地对各种方法进行了一些计时测试。使用 Pandas 的 groupbyapply 可以节省大量时间并避免对输入数据的嵌套循环(尽管我确信有一种更快的方法可以避免 apply 以及......)

我的:

5.49 ms ± 240 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

@Iqbal Basyar:

22.8 ms ± 1.47 ms per loop (mean ± std. dev. of 7 runs, 100 loops each)

@索贝克

17.7 ms ± 922 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

关于python - 如何使用python拆分Dataframe中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52459977/

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