嗨,我有三个列表“ A”,“ B”,“ C”,分别包含10个,20个,30个值。我需要创建一个如下所示的数据框
Values Type
------ ------
ListA_values A
. A
. A
ListB_Values B
. B
.
ListC_Values C
. C
. C
. C
此处的列是“值”和“类型”。抱歉无法绘制出更好的数字。
答案 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