Определенная операция столбцов в Excel с использованием панд

1

У меня есть excel (test.xlsx) лист с несколькими столбцами, col1,col2,col3,col4 и т.д. Я хочу выполнить некоторую операцию в col2,col3 а затем выход output.xlsx имеющий все столбцы снова с обновленным col2,col3..

Что я пытался..

df = pd.read_xlsx('test.xlsx')
col = ['col2','col3']
df_with_some_operation = df[col].<some_op>
df_with_some_operation.to_excel(output.xlsx)

Нужна помощь по этому коду, чтобы все столбцы, включая col2, col3, включались в окончательный output.xlsx

Для лучшей визуализации... Проверьте ниже, я не хочу менять имена столбцов, хочу только обновить контент. Я выбрал этот пример, чтобы упростить его.. col2 и col3 → умножить на 2. просто примечание, в действительности есть несколько столбцов, но только на 2 мне нужно сделать некоторую работу.

input.xlsx
col1   col2 col3
 1      2    3

output.xls
col1  col2  col3
1     4    6
  • 0
    Почему ты не можешь просто использовать drop ?
  • 0
    @roganjosh Мне нужно сохранить все столбцы как есть, просто нужно обновить col2, col3. Лист Excel должен использоваться со всеми столбцами. Какой лучший способ вы можете предложить?
Показать ещё 7 комментариев
Теги:
pandas
excel
python-3.x

3 ответа

1
Лучший ответ

Вы можете просто назначить результат pd.DataFrame.applymap для df[cols]. Это оставит остальную часть вашего блока данных без изменений.

df = pd.read_excel('test.xlsx')

cols = ['col2','col3']
df[cols] = df[cols].applymap(lambda c: translate.translate_text(...))

df.to_excel('output.xlsx')

Если вам нужны 2 новых столбца, вы можете использовать pd.DataFrame.join:

df = df.join(df[cols].applymap(lambda c: translate.translate_text(...))\
                     .set_axis(['col2a', 'col3a'], 1))
1
import pandas as pd

df = pd.DataFrame({'A': [2, 3, 4], 'B': [5, 7, 9], 'C':[10, 11, 12]})

df['A'] = df ['A']*3
df['B'] = df ['B']*2

df.to_excel('output.xlsx')
  • 0
    Какое это имеет отношение к вопросу?
  • 1
    от @steveJ: «Мне нужно сохранить все столбцы как есть, просто нужно обновить col2, col3», я просто пытаюсь предоставить пример для его требования (обновление столбцов A и B и сохранение столбца C как есть)
Показать ещё 4 комментария
1

просто включите только что созданные столбцы в фреймворк orignal.

df_with_some_operation = df[col].<and then the logic work>
newcolums=["coln1","coln2"]


df[newcolums]=df_with_some_operation

теперь таким образом ваш dataframe df, если вы сохраните, будет иметь все столбцы orignal, а также сделанные вами изменения.

Примечание. Вы можете напрямую назначать новые столбцы вместо записи отдельно, как указано выше. Это только для понимания:

newcolums=["coln1","coln2"]

df[newcolumns]=df[col].<and then the logic work>
  • 0
    * Извините за недопонимание, я только что обновил последнюю строку, мне нужны все столбцы, включая обновленные col1 and col2 в output.xlsx
  • 0
    @steveJ сделал изменения

Ещё вопросы

Сообщество Overcoder
Наверх
Меню