Pandas df упорядочивает ячейки и добавляет префикс

Пример Dataframe - результат предварительно очищенного pandas.read_excel:

import pandas as pd
import numpy as np

raw_data = {'ref': ['409075', '405168', '035751', '039374', '331949', '331951', '307128'], 
        'description': ['Product 7 (12X)', 'Product 6 (8X)', 'Product 2', 'Product 1', 'Product 2', 'Product 3', 'Product 3'], 
        'maker': [np.nan, np.nan, 'Companyname1', 'Comp.2', 'Company3', 'Company name 4', 'Maker 5'],
        'type': [np.nan, np.nan, 'Rev. 0', np.nan, np.nan, np.nan, 'Type 5'],
        'qty': [6, 4, 4, 2, 12, 12, 12],
        'val': [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan],
        'serial': [np.nan, np.nan, np.nan, 58690, 900078, 69402, 900078]}
df = pd.DataFrame(raw_data, columns = ['ref_maker', 'description', 'serial', 'maker', 'type', 'val, ''qty'])

Ниже приведен желаемый результат (в столбцах):

  1. ссылка
  2. а) описание + б) производитель + в) тип + г) значение + д) серийный номер
  3. кол-во

Результирующий объединенный столбец описания состояние: не должен содержать более 30 символов и не должен вырезать импортированные ячейки.

(Частично покрыто: Подготовьте Pandas DataFrame для записи в Excel)

| ref       | description     (max 30 ch.)  | qty   |
|--------   |----------------------------   |-----  |
| 409075    | Product 7 (12X)               | 6     |
| 405168    | Product 6 (8X)                | 4     |
| 35751     | Product 2                     | 4     |
|           | MKR: Companyname1             |       |
|           | Type: Rev. 0                  |       |
| 39374     | Product 1                     | 2     |
|           | MKR: Comp.2; SRL: 58690       |       |
| 331949    | Product 2                     | 12    |
|           | MKR: Company3; SRL: 900078    |       |
| 331951    | Product 3                     | 12    |
|           | MKR: Company name 4           |       |
|           | SRL: 69402                    |       |
| 307128    | Product 3                     | 12    |
|           | MKR: Maker 5; Type: Type 5    |       |
|           | SRL: 900078                   |       |

Я пытался найти решения, но мне не удалось изменить их в соответствии с моими потребностями из-за того, что я не понимал их (должным образом). Надеюсь соответствовать требованиям.

Благодарен за любую помощь и подсказки.

Похоже, вы просто пытаетесь объединить 4 столбца в своей таблице. Вы можете просто заполнить отсутствующие значения пустой строкой, а затем использовать df.colname1 + df.colname2 + ... для объединения столбцов, вы также можете добавить ключевые слова между ними: df.colname1 + "MKR: " + df.colname2.

TYZ 13.09.2018 21:08

Таким образом передаются префиксы для ячеек с пропущенными значениями. Мне нужно максимально сократить ячейку столбца описания. Хотя, как уже было сказано, он не может содержать более 30 символов и не должен разрезать части.

manomamao 13.09.2018 22:32

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

TYZ 14.09.2018 15:28

Я новичок в Python и Pandas и, к сожалению, не знаю, как выполнить предварительное заполнение столбца (только для непустых?) И добавление непустых столбцов в несколько строк (не более 30 символов). Не могли бы вы помочь мне или подскажите несколько ключевых слов, которые помогут мне найти правильный путь? Спасибо @YilunZhang

manomamao 15.09.2018 18:48

Я почти закончил и хочу ответить на этот вопрос. Пожалуйста, может ли кто-нибудь сказать мне, как объединить несколько столбцов, где их сумма не превышает 30 символов?

manomamao 19.09.2018 09:27

вы можете просто объединить их, а затем отрезать 30 символов, я думаю? Если только вы не хотите, чтобы состояние и результат были другими.

TYZ 19.09.2018 15:01

@YilunZhang Ну, я не хочу вырезать сразу после 30 символов, потому что я могу вырезать слово или пару ("XXX: yyyy"). В основном, как в последней строке вышеприведенного вывода: Линия продуктов + столбцы, которые обрезаются после того, как n строк достигли 30 символов. Там: 3 струны в 2 дополнительных ряда. - спасибо - в худшем случае буду искать и, возможно, задам новый вопрос.

manomamao 19.09.2018 17:27
0
7
175
0

Другие вопросы по теме