首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过for循环将更改应用到dict中的数据文件中:如何实现?

通过for循环将更改应用到dict中的数据文件中:如何实现?
EN

Stack Overflow用户
提问于 2022-03-16 09:36:49
回答 1查看 117关注 0票数 1

我不能把我做的改动应用于字典里的数据处理。更改是使用for循环完成的。

问题是,尽管循环工作是因为单个迭代的df进行了更改,但它们并不适用于它们所在的字典。最终目标是创建所有数据文件的合并,因为它们来自不同的excel工作表和工作表。在这里,代码:

  1. 导入两个excel文件,将None分配给Sheet_Name参数,以便将文档的所有工作表导入到dict中。我在EEG excel文件中有8页,在SC文件中有5张。 进口numpy为np无足熊猫np eeg = pd.read_excel("path_file",sheet_name = None) sc = pd.read_excel("path_file“sheet_name =无)
  2. 将第一个字典与第二个字典与update方法合并。现在脑电dict同时包含EEG和SC。所以现在我有一个有13个df的小弟弟 eeg.update(sc)
  3. 为了在单个df中执行一些修改,需要循环for。将索引重置为特定列(在所有df中都是常见的),更改其名称,在对应于df键的变量上添加前缀,最后用nan更改0。 对于键,eeg.items()中的df : df.set_index(('Unnamed: 0'),inplace = True) df.index.rename(('Sbj'),inplace = True) df = df.add_prefix( key + '_') df.replace (0,np.nan,inplace = True)

尽管循环是在字典项上设置的,并且单次迭代的数据merge可以工作,但我看不到字典df上的更改,因此无法继续将它们提取到列表中,然后合并。

如图1所示,for循环中的单个df是好的!

但是当我去dict中的df时,它们仍然和以前一样。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-16 09:49:07

您需要将修改后的数据映射回字典:

代码语言:javascript
复制
for key, df in eeg.items():
   df.set_index(('Unnamed: 0'), inplace = True)
   df.index.rename(('Sbj'), inplace = True)
   df = df.add_prefix( key + '_')
   df.replace (0, np.nan, inplace = True)
   eeg[key] = df #map df back into eeg

你可能想要的是:

代码语言:javascript
复制
# merge the dataframes in your dictionary into one
df1 = pd.DataFrame()
for key, df in eeg.items():
    df1 = pd.concat([df1,df])

# apply index-changes to the merged dataframe
df1.set_index(('Unnamed: 0'), inplace = True)
df1.index.rename(('Sbj'), inplace = True)
df1 = df1.add_prefix( key + '_')
df1.replace (0, np.nan, inplace = True)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71494659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档