Определенная операция столбцов в Excel с использованием панд - PullRequest
0 голосов
/ 27 августа 2018

У меня есть лист 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

Ответы [ 3 ]

0 голосов
/ 27 августа 2018

просто включите новые сгенерированные столбцы в оригинальный кадр данных.

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


df[newcolums]=df_with_some_operation

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

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

newcolums=["coln1","coln2"]

df[newcolumns]=df[col].<and then the logic work>
0 голосов
/ 27 августа 2018

Вы можете просто присвоить результат 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))
0 голосов
/ 27 августа 2018
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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...