2014-10-10 3 views
2

나는 다음과 같은 데이터가 있습니다Dataframe 건물

X = [8.5,9.48,8.65,8.16,8.83,7.76,8.63] 
Y = [8.27,8.20,8.25,8.14,9.00,8.10,7.20,8.32,7.70] 

을 그리고 dataframe하고 싶은 :

serie value 
0  X 8.50 
1  X 9.48 
2  X 8.65 
3  X 8.16 
4  X 8.83 
5  X 7.76 
6  X 8.63 
7  Y 8.27 
8  Y 8.20 
9  Y 8.25 
10  Y 8.14 
11  Y 9.00 
12  Y 8.10 
13  Y 7.20 
14  Y 8.32 
15  Y 7.70 

순간을 위해 다음과 같이 진행됩니다 :

import pandas as pd 

lst = ['X']*len(X) 
lst.extend(['Y']*len(Y)) 
X.extend(Y) 

df = pd.DataFrame({"value":X, "serie":lst}) 

하지만 용융으로 할 수있는 방법이 더 많을 까?

답변

5

당신은 목록 X와 Y에 대한 DataFrames을 구축 할 수 있으며, 다음에 Trueignore_index 세트 연결할 : 제위한

>>> xdf = pd.DataFrame({'value': X, 'serie': 'X'}) 
>>> ydf = pd.DataFrame({'value': Y, 'serie': 'Y'}) 
>>> pd.concat([xdf, ydf], ignore_index=True) 
    serie value 
0  X 8.50 
1  X 9.48 
2  X 8.65 
3  X 8.16 
4  X 8.83 
5  X 7.76 
6  X 8.63 
7  Y 8.27 
8  Y 8.20 
... 
+0

고마워요! 실제로 응답을 잊어 버렸습니다.이 답변은 매우 명백합니다! –

1

당신은 DataFrame에 생성자에서 사전 인라인을 구축 할 수 있습니다 :

In [246]: 

pd.DataFrame({'serie':['X']*len(X) + ['Y']*len(Y), 'value':X+Y}) 
Out[246]: 
    serie value 
0 X  8.50 
1 X  9.48 
2 X  8.65 
3 X  8.16 
4 X  8.83 
5 X  7.76 
6 X  8.63 
7 Y  8.27 
8 Y  8.20 
9 Y  8.25 
10 Y  8.14 
11 Y  9.00 
12 Y  8.10 
13 Y  7.20 
14 Y  8.32 
15 Y  7.70 
2

이 좀 더 효율적이고 간결 :

df = pd.DataFrame({'value': X+Y, 'serie': 'Y'}) 
df['serie'][0:len(X)] = 'X' 
+0

Thnanks을 접근이다! 참고로 –

+1

. 이것은 체인화 된 할당이고 일반적으로 작동하지 않을 것입니다 (그리고''SettiWithCopyWarning/Error''를 더 잘 보여줄 것입니다 :''df.ix [0 : len (X), 'seris'] = 'X '' ' – Jeff