2014-11-24 70 views
0

我有一個有三列的熊貓數據框,說:A,B,C和我想重新排列數據並將其輸出爲CSV,以便C中的所有值具有相同的價值在A共享一行。因此,舉例來說,如果我的代碼塊設計如下(例如,不,我會設計這樣說):」寫熊貓dataframe列csv行交錯

check=pd.DataFrame(columns=['A','B', 'C']) 
 

 
for i in range(8): 
 
    check.loc[1]=[1,11,10] 
 
    check.loc[2]=[1,21,23] 
 
    check.loc[3]=[1,23,32] 
 
    check.loc[4]=[2,21,41] 
 
    check.loc[5]=[2,21,11] 
 
    check.loc[6]=[3,21,29] 
 
    check.loc[7]=[4,21,43] 
 
    check.loc[8]=[4,21,52]

` 我所要的輸出看像在CSV下列之一: 此:

1 ,,,

10,23,32,

2 ,,,

41,11 ,,

3 ,,,

29 ,,,

4 ,,,

43,52 ,,

OR:

1,10,23,32

2,41,11,

3,29 ,,

4,43,52,

OR:

10,23,32,

41,11 ,,

29 ,,,

43,52 ,,

非常感謝您的任何建議。

回答

1

呃......有點難以理解你真正在做的事情。但看起來你根本沒有輸出B列。第一步是以可接受的方式安排數據。對於A的每個值,這似乎是一排。然後導出。

獲取上一個示例輸出的一種方法是創建一個列表,其中每個列表項是所需的行。我會做到這一點通過A對數據進行分組,然後在組迭代:

g = check.groupby('A') 
bigList = [] 
for group in g: 
    rowList = [] 
    for c in group[1].C.iteritems(): 
     rowList.append(c[1]) 
    bigList.append(rowList) 

現在bigList是列表的列表。所以,我們就可以將其轉換成一個數據幀的熊貓,然後保存到CSV:

outData = pd.DataFrame(bigList) 
outData.to_csv('myFile.csv', index=False) 

你可以採取上述循環,並修改它做你的其他的例子還有。這會做你的第二個:

bigList = [] 
for group in g: 
    rowList = [] 
    rowList.append(group[0]) 
    for c in group[1].C.iteritems(): 
     rowList.append(c[1]) 
    bigList.append(rowList)