Excel Ряды с предложениями Python - PullRequest
0 голосов
/ 24 августа 2018

Допустим, у меня есть файл Excel с 5 строками и 2 столбцами.

apples      color
honeycrsp   red
gala        red
goldendel   orange
fuji        red
grannys     green

Я хочу поместить каждую из строк в повторяющееся предложение. Например, я хочу, чтобы column1 и column2 были добавлены к предложению.

например, "это яблоко - медовое с красным цветом"

Это то, что я до сих пор кодировал:

import pandas as pd;

FILE_PATH = "C:\\Users\\apples.xls";
xl = pd.ExcelFile(FILE_PATH);
df = xl.parse('testone');

apples = []
color =[]
apples = list(df['apples'])
color = list(df['color'])

def f(string, n, c=0):
    if c < n:
       print(string)
       f(string, n, c=c + 1)

f('this apple is{0} with color {0}'.format(apples,color), 3)

Желаемый вывод:

"это яблоко - медовое с красным цветом"

"это яблоко гала с красным цветом"

"это яблоко золотистое с оранжевым цветом"

"это яблоко - фуджи с красным цветом"

"это яблоко - бабушка с зеленым цветом"

Ответы [ 2 ]

0 голосов
/ 24 августа 2018
import pandas as pd

FILE_PATH = "C:\\Users\\apples.xls"
xl = pd.ExcelFile(FILE_PATH)
df = xl.parse('testone')

apples = list(df['apples'])
colors = list(df['color'])

for apple, color in zip(apples, colors):
    print('this apple is {0} with color {1}'.format(apple, color))

Ouputs:

this apple is honeycrsp with color red
this apple is gala with color red
this apple is goldendel with color orange
this apple is fuji with color red
this apple is grannys with color green

Вы можете поместить последние две строки в функцию, если хотите.Я думаю, что это гораздо более простое и удобочитаемое решение.

Также, некоторые ошибки, которых следует избегать в будущем:

  • Никогда не используйте;в python
  • размещение чисел внутри тегов {} при использовании .format приведет к форматированию аргументов по индексу (отсюда и причина получения яблок там, где вам нужны цвета)
0 голосов
/ 24 августа 2018

Считать данные как фрейм данных и использовать применить

import pandas as pd

data = pd.DataFrame({'apples':["honeycrsp","gala","goldendel","fuji","grannys"],'color':["red","red","orange","red","greeen"]})

def concat(r):
    return return 'this apple is ' + r[0] + ' with color ' + r[1]

data.apply(concat,axis=1)

Приведенная выше программа отображает следующее

0       this apple is honeycrsp with color red
1            this apple is gala with color red
2    this apple is goldendel with color orange
3            this apple is fuji with color red
4      this apple is grannys with color greeen

Если вы не хотите, чтобы индекс появлялся

s = data.apply(concat,axis=1)
print(s.to_string(index=False))

, который дает вам результат

this apple is honeycrsp with color red
this apple is gala with color red
this apple is goldendel with color orange
this apple is fuji with color red
this apple is grannys with color greeen
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...