我在字典中存储了几个pandas
数据帧:
df1=pd.DataFrame({'product':['ajoijoft','bbhjbh','cser','sesrd','yfgjke','tfyfyf','drdrtjg'],'price':[1,2,3,4,5,6,7],'label':['h','i','j','k','L','n','m']})
df2=pd.DataFrame({'product':['ajyughjoijoft','bdrddbhjbh','rdtrdcser','sdtrdthddesrd','yawafgjke','tesrgsfyfyf','sresedrdrtjg'],'price':[1,2,3,4,5,6,7],'label':['h','i','j','k','L','n','m']})
df3=pd.DataFrame({'product':['joijoft','bdbhjbh','rdcser','sdhddesrd','wajke','yf','sresedrdrtjg'],'price':[1,2,3,4,5,6,7],'label':['h','i','j','k','L','n','m']})
df_dict = {"A":df1,'B':df2, "C":df3}
我想知道product
中每个字符串的长度,所以我写如下。你知道吗
for i, ii in df_dict.items():
ii['Productsize'] = ii['product'].str.len()
这是有效的,我可以得到所有“产品”的长度。你知道吗
接下来,我要删除具有短product
字符串长度的行,即:Productsize < 6
我试着用这个代码:
for i, ii in df_dict.items():
ii=ii[~(ii['Productsize'] <= 6)]
然而,这并没有起作用。 如果我像下面那样单独编写(即不在循环中),它仍然可以工作。你知道吗
df1=df1[~(df1['Productsize'] <= 6)]
有人知道问题出在哪里吗?你知道吗
我试过你们建议的。不幸的是,这不起作用。你知道为什么。。。?这是密码。你知道吗
df1=pd.DataFrame({'product':['ajoijoft','bbhjbh','cser','sesrd','yfgjke','tfyfyf','drdrtjg'],'price':[1,2,3,4,5,6,7],'label':['h','i','j','k','L','n','m']})
df2=pd.DataFrame({'product':['ajyughjoijoft','bdrddbhjbh','rdtrdcser','sdtrdthddesrd','yawafgjke','tesrgsfyfyf','sresedrdrtjg'],'price':[1,2,3,4,5,6,7],'label':['h','i','j','k','L','n','m']})
df3=pd.DataFrame({'product':['joijoft','bdbhjbh','rdcser','sdhddesrd','wajke','yf','sresedrdrtjg'],'price':[1,2,3,4,5,6,7],'label':['h','i','j','k','L','n','m']})
df_dict = {"A":df1,'B':df2, "C":df3}
for i, ii in df_dict.items():
ii['Productsize'] = ii['product'].str.len()
for i, ii in df_dict.items():
df_dict[i] = ii[~(ii['Productsize'] <= 6)]
首先,您应该使用字典或列表来保存许多相似的结构化数据帧,而不是用单独的数据帧充斥您的全局环境。始终使用容器来组织自己,并设置为运行批量操作,如
pd.concat
来构建主集。但要确保直接将dataframes分配给dictionary,而不是创建单独的对象。你知道吗至于字典数据帧不更新的原因是没有正确分配。
df
的每个实例都需要替换为df[key]
。所以将被替换为
当数据帧存储在容器中时,不会丢失它的任何功能,只是引用它会发生更改。因此,应相应调整:
或者,使用dictionary循环的value项,但将对当前索引的临时更改重新分配为@phi explains。你知道吗
你可能不应该建立一个框架字典。但如果是这样,则应使用以下代码修改字典:
语句
ii = ii[~(ii['Productsize'] <= 6)]
将修改后的dataframe分配给变量ii
,但在下一次循环迭代中会覆盖该变量。你知道吗为什么我的代码不起作用
当你打电话的时候
python创建2个变量i和ii,分配给key和dataframe。
同时,您的
df1, df2, df3, df_dict
没有改变(在第一个循环中,ii
和df1
引用相同的对象dataframe,但它们仍然是两个不同的变量)。你知道吗然后下一个表达式创建dataframe的另一个对象,将
ii
分配给新创建的对象。你的df1, df2, df3, df_dict
仍然没有改变。你知道吗为了改变
df1
,您必须显式地这样做改变
df_dict
您可能需要考虑变量,如
tags
相关问题 更多 >
编程相关推荐