python pandas: выбор одного столбца из нескольких значений - PullRequest
0 голосов
/ 26 февраля 2020

Я хочу использовать только индекс столбца 0, чтобы поставить все мои dict [значения], данные. но всякий раз, когда я использую несколько значений, таких как "C", "D", индекс увеличивается, я хочу, чтобы мои значения добавлялись по вертикали без увеличения индекса в Excel. * Я знаю, что должен изменить orient='index' часть для желаемого результата. Пробовал искать этот конкретный код, но я не мог ... помочь?

android_report_data_set ={
    "A":["APPLE"],
    "B":["KIWI"],
    "C":["MANGOJUICE","WATERMELONJUICE","DURIANJUICE"]}
    "D":["RED","PINK","BLACK"]}

df = pd.DataFrame.from_dict(android_report_data_set, orient='index')

df.transpose()



*EXPECTED OUTPUT

+----+-----------------+
|    |  0              |
+----+-----------------+
| A  | APPLE           |  
| B  | KIWI            |  
| C  | MANGOJUICE      |
|    | WATERMELONJUICE |
|    | DURIANJUICE     |
| D  | RED             |
|    | PINK            |
|    | BLACK           | 
+----+-----------------+

*OUTPUT
+----+------------+---------------------+--------------+
|    | 0          | 1                   | 2            |
+----+------------+---------------------+--------------+
| A  | APPLE      |                     |              |
| B  | KIWI       |                     |              |
| C  | MANGOJUICE | WATERMELONJUICE     | DURIANJUICE  |
| D  | RED        | PINK                | BLACK        |
+----+------------+---------------------+--------------+

Спасибо !!

1 Ответ

1 голос
/ 26 февраля 2020

Используйте DataFrame.stack с Series.reset_index по первому уровню для удаления второго уровня, а затем конвертируйте tpo один столбец DataFrame в Series.to_frame:

df1 = df.stack().reset_index(level=1, drop=True).to_frame()
print (df1)
                 0
A            APPLE
B             KIWI
C       MANGOJUICE
C  WATERMELONJUICE
C      DURIANJUICE
D              RED
D             PINK
D            BLACK

Если вам нужны только первые значения в индексе, вы можете заменить дублированные значения на пустые строки:

df1.index = df1.index.where(~df1.index.duplicated(), '')
print (df1)
                 0
A            APPLE
B             KIWI
C       MANGOJUICE
   WATERMELONJUICE
       DURIANJUICE
D              RED
              PINK
             BLACK

Последняя запись в файл, index=False следует опустить, чтобы избежать удаления значений индекса ('A','B','C','D'):

df1.to_excel(file)
...