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