Почему я не могу разворачивать (растопить) этот кадр данных панды (python) - PullRequest
1 голос
/ 24 апреля 2020

У меня есть кадр данных panda, который я сделал, и я повернул его точно так, как я хочу. Теперь я хочу отменить все, чтобы получить данные о положении (строка и столбец) с вновь сформированным фреймом данных и посмотреть, какие именно. Например, я хочу, чтобы в первой строке (в новом фрейме данных, который не разворачивается с данными позиции) было 1 под «строкой», 1 под «а» и 1 в качестве значения (пример ниже). Может кто-нибудь, пожалуйста, выяснить, как я могу отключить, чтобы получить значения строки и столбца? Я пытался использовать pd.melt, но это не сработало (это не имело никакого значения). Пожалуйста, ответьте в ближайшее время. Спасибо! Непосредственно ниже приведен код для создания поворотного фрейма данных.

import pandas as pd
row = [1, 2, 3, 4, 5]
df67 = {'row':row,}
df67 = pd.DataFrame(df67,columns=['row'])
df67['a'] = [1, 2, 3, 4, 5]
df67['b'] =[13, 18, 5, 10, 6]
#df67 (dataframe before pivot)
df68 = df67.pivot(index='row', columns = 'a')
#df68 (dataframe after pivot)

What I want the result to be for the first line: row | a | value 1 | 1 | 13

1 Ответ

1 голос
/ 24 апреля 2020

Используйте DataFrame.stack с DataFrame.reset_index:

df = df68.stack().reset_index()
print (df)
   row  a     b
0    1  1  13.0
1    2  2  18.0
2    3  3   5.0
3    4  4  10.0
4    5  5   6.0

РЕДАКТИРОВАТЬ:

Чтобы избежать удаления пропущенных значений, используйте dropna=False параметр:

df = df68.stack(dropna=False).reset_index()
print (df)
    row  a     b
0     1  1  13.0
1     1  2   NaN
2     1  3   NaN
3     1  4   NaN
4     1  5   NaN
5     2  1   NaN
6     2  2  18.0
7     2  3   NaN
8     2  4   NaN
9     2  5   NaN
10    3  1   NaN
11    3  2   NaN
12    3  3   5.0
13    3  4   NaN
14    3  5   NaN
15    4  1   NaN
16    4  2   NaN
17    4  3   NaN
18    4  4  10.0
19    4  5   NaN
20    5  1   NaN
21    5  2   NaN
22    5  3   NaN
23    5  4   NaN
24    5  5   6.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...