У меня есть 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
Вы можете просто назначить результат 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))
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')
просто включите только что созданные столбцы в фреймворк 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>
col1 and col2
в output.xlsx
drop
?