如何添加具有不同长度的三个不同值的列?

时间:2018-11-20 12:31:14

标签: python pandas dataframe

嗨,我有三个列表“ 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 :(得分:1)

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

答案 1 :(得分:0)

如果您有列表,我将创建一个字典,然后使用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