【发布时间】:2021-11-16 14:08:12
【问题描述】:
我有一个像 df 这样的数据框,
id name age duration
1 ABC 20 12
2 sd 50 150
3 df 54 40
我想在同一个df中复制这些数据,直到持续时间总和大于或等于300,
所以df可以像..
id name age duration
1 ABC 20 12
2 sd 50 150
3 df 54 40
2 sd 50 150
到目前为止,我已经尝试了以下代码,但有时它会在无限循环中运行:/。 请帮忙。
def fillPlaylist(df,duration):
print("inside fill playlist fn.")
if(len(df)==0):
print("df len is 0, cannot fill.")
return df;
receivedDf= df
print("receivedDf",receivedDf,flush=True)
print("Received df len = ",len(receivedDf),flush=True)
print("duration to fill ",duration,flush=True)
while df['duration'].sum() < duration:
# random 5% sample of data.
print("filling")
ramdomSampleDuplicates = receivedDf.sample(frac=0.05).reset_index(drop=True)
df = pd.concat([ramdomSampleDuplicates,df])
print("df['duration'].sum() ",df['duration'].sum())
print("after filling df len = ",len(df))
return df;
【问题讨论】:
标签: python-3.x pandas dataframe data-science