我将如何更新 orderedDict 中的每个数据框?

How would I update each dataframe in orderedDict?

我有一个包含三个 sheet 的 excel 文件:

Sheet1:
name   fav    date
blue    5     11/20/2020
orange  5     11/20/2020
red     5     11/20/2020

sheet 2 和 3 遵循相同的格式(同样的列名)

我使用 pandas 读取 excel 文件,结果显示为 orderedDict:

dict = pd.read_excel('Book1.xlsx', sheet_name= None)

输出:`

OrderedDict([('Sheet1',      name  fav       date
0  purple    3 2020-04-29
1     tan    2 2020-04-29
2    blue    1 2020-04-29), ('Sheet2',     name  fav       date
0  white    1 2020-04-29
1  black    2 2020-04-29
2   gray    3 2020-04-29), ('Sheet3',      name  fav       date
0    blue    5 2020-11-20
1  orange    5 2020-11-20
2     red    5 2020-11-20)])

如果我想对具有相同列名的所有三个 sheet 进行任何操作,我该怎么做?

例如如果在每个 sheet

中的每个名称列值的末尾添加字母 'g'

例如:

Sheet1:
name     fav      date
blueg     5       11/20/2020
orangeg   5       11/20/2020
redg      5       11/20/2020

sheet2: 
name    fav    date
whiteg   1      4/29/2020
blackg   2      4/29/2020
grayg    3      4/29/2020

有什么建议吗?

尝试以下操作来连接您的数据帧:

df = pd.concat(pd.read_excel('Book1.xlsx', sheet_name=None), ignore_index=True)

如果你想保持帧分离并简单地执行一个动作,写一个循环应该可行,继续应用:

for _frame_name, _frame in dict:
    _frame["name"] = _frame["name"].apply(lambda x: x + "g", axis=0)

当您遍历字典中的项目时,使用 .items() 和 Python returns 它们作为键值对。在 read_excel() 返回的字典中,键是 sheet 名称,值是数据帧。要访问数据框,请将元组拆分为 for 语句,然后就地操作数据框:

dict = pd.read_excel('Book1.xlsx', sheet_name= None)

for sheet_name, df in dict.items():
   df['name'] = df['name'] + 'g'   

注意:使用 dict 作为字典名称会影响用于创建字典的内置 dict() 函数。您应该使用不同的名称。