Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 如何将重复出现的垂直列转换为行,而不是在Python/Pandas中将它们堆叠在一起?_Python 2.7_Pandas_Dataframe_Transpose_Data Manipulation - Fatal编程技术网

Python 2.7 如何将重复出现的垂直列转换为行,而不是在Python/Pandas中将它们堆叠在一起?

Python 2.7 如何将重复出现的垂直列转换为行,而不是在Python/Pandas中将它们堆叠在一起?,python-2.7,pandas,dataframe,transpose,data-manipulation,Python 2.7,Pandas,Dataframe,Transpose,Data Manipulation,我首先垂直生成一些数据,但希望将它们转换为行数据,然后将它们堆叠到一个数组中,就像熊猫数据帧一样。如何获得包含4列('fr'、'en'、'ir'、'ab')和三行的熊猫数据帧的最终产品 # 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 imp

我首先垂直生成一些数据,但希望将它们转换为行数据,然后将它们堆叠到一个数组中,就像熊猫数据帧一样。如何获得包含4列('fr'、'en'、'ir'、'ab')和三行的熊猫数据帧的最终产品

# 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

为了实现这一点,我将创建一个包含数组的列名字典(散列)。然后,当我循环遍历文件中的行时,我将使用第一个值索引到字典中以获取数组,然后将数值附加到该数组中

构建此临时数据结构后,您可以在数组中循环,为每行提取相同的索引值并打印它们:

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

(如果示例中的值是唯一的,这将有助于澄清,例如1554483、1554484、1554485)这些值将从某些函数中派生,因此每行和每列都将不同。仅将重复值用作演示。我将更改它们以便于澄清。我不知道如何或在何处添加到我的代码中,请您展示适合我的代码(我在python方面不是很先进)