Как бы я обновил каждый фрейм данных в OrderDict? - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть файл Excel из трех листов:

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

лист 2 и 3 соответствует одному и тому же формату (также с одинаковыми именами столбцов)

Я использую pandas для чтения Файл Excel, и он выходит в виде orderDict:

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

output: `

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)])

Если бы я хотел выполнить какие-либо манипуляции со всеми тремя листами с одинаковыми именами столбцов Как бы я это сделал что?

как например Если добавить букву 'g' в конце каждого имени столбца значение на каждом листе

ex:

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

какие-либо предложения?

Ответы [ 2 ]

1 голос
/ 29 апреля 2020

Когда вы перебираете элементы в словаре, используйте .items(), а Python возвращает их как пары ключ-значение. В словаре, возвращаемом read_excel(), ключ - это имя листа, а значение - это фрейм данных. Чтобы получить доступ к фрейму данных, разделите кортеж на оператор for и затем управляйте фреймом данных на месте:

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

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

Примечание. Использование dict для имени вашего словаря затеняет встроенный dict() функция для создания словарей. Вы должны использовать другое имя.

0 голосов
/ 29 апреля 2020

попробуйте следующее, чтобы объединить ваши фреймы данных:

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

Если вы хотите разделить фреймы и просто выполнить действие, запись al oop должна сработать, продолжая применять:

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