Как добавить столбец с тремя разными значениями различной длины? - PullRequest
0 голосов
/ 20 ноября 2018

Привет, у меня есть три списка «A», «B», «C», которые содержат 10, 20 и 30 значений соответственно. Мне нужно создать кадр данных, как показано ниже

Values                   Type
------                  ------ 
ListA_values              A
     .                    A
     .                    A
ListB_Values              B
     .                    B
     . 
ListC_Values              C
     .                    C
     .                    C
     .                    C                            

Столбцы здесьЗначения и тип.Извините Не могу нарисовать лучшую фигуру.
.

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Если у вас есть списки, я бы создал словарь, а затем использовал pd.concat + конструктор DataFrame по умолчанию, чтобы вывести DataFrame

import pandas as pd

# Whatever your values are, whatever the size.
A = ['ListA_values']*40 
B = ['ListA_values']*80
C = ['ListA_values']*90

d = {'A': A, 'B': B, 'C': C}

pd.concat([pd.DataFrame(v, columns=['Values']).assign(Type=k) for k,v in d.items()], ignore_index=True)

Вывод:

           Values Type
0    ListA_values    A
1    ListA_values    A
2    ListA_values    A
3    ListA_values    A
4    ListA_values    A
5    ListA_values    A
..            ...  ...
206  ListA_values    C
207  ListA_values    C
208  ListA_values    C
209  ListA_values    C
0 голосов
/ 20 ноября 2018
df1 = pd.DataFrame({'Type': ['A']*100})
df2 = pd.DataFrame({'Type': ['B']*75})
df3 = pd.DataFrame({'Type': ['C']*80})

#Concatenate the DataFrames
df=df1.append(df2).append(df3).reset_index(drop=True)

df.loc[df['Type']=='A','Values']='ListA_values'
df.loc[df['Type']=='B','Values']='ListB_values'
df.loc[df['Type']=='C','Values']='ListC_values'

df=df[['Values','Type']]

Более эффективный способ будет -

df1 = pd.DataFrame({'Type': ['A']*100})
df1.index = ['ListA_values'] * len(df1)
df2 = pd.DataFrame({'Type': ['B']*75})
df2.index = ['ListB_values'] * len(df2)
df3 = pd.DataFrame({'Type': ['C']*80})
df3.index = ['ListC_values'] * len(df3)

#Concatenate the DataFrames
df=df1.append(df2).append(df3)
df['Values'] = df.index
df=df.reset_index(drop=True)
df=df[['Values','Type']]

df
Out[31]: 
         Values Type
0  ListA_values    A
1  ListA_values    A
2  ListA_values    A
3  ListA_values    A
4  ListA_values    A
5  ListA_values    A
6  ListA_values    A
..            ...  ...
252  ListC_values    C
253  ListC_values    C
254  ListC_values    C
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...