我有一个csv文件,其中有列位置和数量(Menge)。我必须添加行的副本,其中(在我的情况下,它是Menge)Quantity>;1,我使用:
file_to_check = file_to_check.loc[file_to_check.index.repeat(file_to_check.Menge)].reset_index(drop=True)
这是伟大的作品,完全按照我想要的复制,但我还必须更新他们的立场。 例如:
Position Menge Product
200 3 a
200 3 a
200 3 a
400 7 b
400 7 b
400 7 b
400 7 b
400 7 b
400 7 b
400 7 b
200 4 c
200 4 c
200 4 c
200 4 c
我希望它看起来像这样
Position Menge Product
200.1 3 a
200.2 3 a
200.3 3 a
400.1 7 b
400.2 7 b
400.3 7 b
400.4 7 b
400.5 7 b
400.6 7 b
400.7 7 b
200.1 4 c
200.2 4 c
200.3 4 c
200.4 4 c
.
.
.
之后,我知道我可以通过使用以下方法更改Menge(数量):
selected.loc[:, 'Menge'] = 1
我尝试使用for loop和loc作为:
counter=0
if selected.loc[selected.Menge >1]:
counter=selected['Menge']
i=1
while counter>=1:
selected['Pos.']+=i/10
i+=1
counter-=1
但我一直得到一个错误:
'ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().'
我寻找答案,但没有什么能真正帮助我。需要一些帮助,因为我对Python和熊猫还很陌生。你知道吗
所以我修改了我的问题。我有不同的产品,但其中一些有相同的位置。我怎样才能改变每一个产品的位置,而不是像所有产品都是一个一样添加产品.as如表所示
你可以这样做:
所以这里I} ,使相等的值按照出现的顺序排列,这有效地按照与计数器相同的顺序排列值
groupby
在'Position'
上,用parammethod='first'
调用^{您的错误来自:
然后使用以下方法进行比较:
所以这个错误告诉你它不知道如何解释一个
Series
,因为counter >=
返回一个布尔序列,它需要一个标量布尔值来解释。您必须逐行迭代,这样才能得到一个标量值,以便正确地解释,此外,您应该尽可能避免循环,因为它很慢编辑
根据您的新数据,您只需在多个列上
groupby
:编辑
好的,要处理出现次数超过10次的情况,以避免执行
201
,例如:因此,这首先将输出从
rank
转换为int
,因为它生成一个float
,然后转换为str
,因此我们可以创建一个字符串,例如'200' + '.' + '1'
,然后在必要时转换回float
输出:
相关问题 更多 >
编程相关推荐