我试图添加值到一个新的dataframe(df 2)列(折扣%),该列中的值必须基于“网格”和实体从df 1),我的结构如下x1c 0d1x
因此,如果对于同一实体,DF 1中的列为91-120,则它应该在折扣%下向DF 2添加20,如果DF 1中的列为61-90,则它必须向DF 2添加5,依此类推。
数据是从一个大的csv文件导入,到目前为止,我已经尝试了下面,但如果只填写0
for j in range(0,len(df1)):
for i in range(0,len(df2)):
if grid['91-120'][j] in df2['Grid'][i]:
#df['Grid%'][i] = grid['91-120'][j]
df2.loc[i, 'Grid%'] = df1['91-120'][j]
谢谢你
1条答案
按热度按时间deyfvvtc1#
我目前正在处理一个与迭代 Dataframe 有关的类似问题。如果可以避免的话,你真的不想这样做,特别是如果 Dataframe 包含像DF1这样的重复值。我建议将引用 Dataframe DF1转换为具有索引方向的字典,然后将该字典中的值分配给DF2,如下所示。
我找到这个解决方案是因为,正如我之前提到的,我目前正在解决一个类似的问题。
知道在 Dataframe 上迭代对函数的性能有多有害,我意识到从字典中赋值会更快。我在Stack Overflow和pandas documentation中查找了如何将dataframe转换为字典。接下来,我从Stack Overflow上的字典中查找如何为 Dataframe 赋值。一开始我是想找个“dict”方向。我可以让它根据“网格”为每个“实体”分配所有折扣值,但我不能选择一个正确的折扣值。
我在网上找不到任何其他解决方案来从2D字典中为dataframe赋值,所以我转向ChatGPT。ChatGPT做了它的事情之后,我在每个领域都得到了“没有”。最终,我得到了它的建议,将字典的方向从“dict”改为“系列”。这也不起作用,但我想我会尝试所有其他的方向。索引工作。
缺点是折扣%值是浮动的。优点是它可以处理字典中没有Grid值的情况(例如:其中网格是“360+”)。