Объединить столбцы, содержащие категории, с столбцами, содержащими целые числа - PullRequest
0 голосов
/ 12 февраля 2019

Я хотел бы создать корреляционные данные между столбцами , как в этой диагональной матрице корреляции .

В настоящее время мои данные имеют следующий формат:

enter image description here

И мне нужно преобразовать его в этот формат:

enter image description here

Как это возможно, объединение категорийиз T и G в столбцы сэмплов?

Спасибо за вашу помощь!

Редактировать:

print(df.dtypes) Выводы:

T
int64
Group
object
Sample1
float64
Sample2
int64
Sample3
float64
dtype: object

print(df.index) Выходы:

Int64Index([0, 1, 3, 6, 16, 18, 19, ..., 52], dtype='int64')

print(type(df)) Выходы:

<class 'pandas.core.frame.DataFrame'>

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Если исходный фрейм данных называется df, а столбцы - T, G и Sample *, следующий код подготавливает новый фрейм данных в нужном формате:

list_T = list(df['T'].unique())
list_G = list(df['G'].unique())
list_Samples = list(df.drop(['T', 'G'], axis = 1).columns)

cols = []
data = []
for s in list_Samples:
    for g in list_G:
        for t in list_T:
            cols.append(s + ' T' + str(t) + ' ' + g)
            data.append(list(df[s][(df['T'] == t) & (df['G'] == g)]))

df2 = pd.DataFrame(data = np.array(data).T, columns = cols)

Исходный фрейм данных:

enter image description here

Преобразованный кадр данных:

enter image description here

0 голосов
/ 12 февраля 2019

Было бы проще, если вы поставите ссылку на данные.Я не хочу прописывать ваши данные.Пожалуйста, попробуйте с PANDAS - Crosstab.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...