2015-10-20 41 views
2

我首先在垂直方向生成一些數據,但是想將它們轉換爲行數據,然後將它們像熊貓數據框一樣堆疊到一個數組中。我如何獲得4欄('fr','en','ir','ab')和三行熊貓數據框的最終產品?如何將經常性垂直列轉換爲行,而不是將它們堆疊在Python/Pandas中?

# coding=utf-8 
import pandas as pd 
from pandas import DataFrame, Series 
import numpy as np 
import nltk 
import re 
import random 
from random import randint 
import csv 
import sys 
reload(sys) 
sys.setdefaultencoding('utf-8') 

# Get csv file into data frame 
data = pd.read_csv("FamilySearchData_All_OCT2015_newEthnicity_filledEthnicity_processedName_trimmedCol.csv", header=0, encoding="utf-8") 
df = DataFrame(data) 

columns = ['fr', 'en', 'ir', 'ab'] 
classes = ['ethnicity2', 'Ab_group', 'Ab_tribe'] 
df_count = DataFrame(columns=columns) 

for j in classes: 
    for i in columns: 
     ethnicity_tar = str(i) 
     count = 0 
     try: 
      count = df[str(j)].value_counts()[ethnicity_tar] 
     except Exception as e: 
      count = '' 
     print ethnicity_tar, count 

輸出:

fr 1554455 
en 1196932 
ir 941852 
ab 95131 
fr 1554444 
en 16000 
ir 940850 
ab 9371 
fr 1554600 
en 2196931 
ir 940957 
ab 9399 

我想在最後什麼:

fr  en  ir  ab 
1554455 1196932 941852 95131 
1554444 16000 940850 9371 
1554600 2196931 940957 9399 
+0

(這將有助於明晰,如果在你的榜樣的價值是獨一無二的,例如1554483,1554484,1554485) – smci

+0

這些值將從一些函數中派生出來,因此每行和每列都會有所不同。只使用重複值作爲演示。我會改變它們的清晰度 – KubiK888

回答

0

爲了實現這一點,我將創建的列名的一個字典(散列)各自包含的陣列。然後,當我遍歷文件中的行時,我會使用第一個值索引到字典中以獲取數組,然後將數值附加到該數組。

一旦這個臨時的數據結構建立,可以通過陣列的每一行拉動同一指標值進行打印循環:

for i in range(0, n): 
    print str(hash['fr'][i]) + " " + 
    str(hash['en'][i]) + " " + 
    str(hash['ir'][i]) + " " 
    str(hash['ab'][i]) 
+0

不知道如何或在哪裏添加到我的代碼中,你可以請你的代碼適合我的(我不是很進步的Python) – KubiK888

相關問題