Pandas:从其他数据框信息创建数据框行

时间:2015-06-14 12:19:28

标签: python pandas dataframe

我正在使用汇总数据,我需要进行反汇总才能进一步处理。原始df包含一个值' no。学生'每行我在每个学生的新df中需要一行:

原创df:

(apply mapv vector [[1, "a"], [2, "b"], [3, "c"]])

新df:

                faculty A   faculty B   faculty x
male students           2           7       ...
female students         4           3       ...

等等。原始df包含更多信息(如国籍和地区信息),但可以采用与性别等相同的方式处理。 显然我从转置(df.T)开始,但随后乐趣开始......我非常喜欢初学者,任何指针都会非常受欢迎。

1 个答案:

答案 0 :(得分:0)

我认为“分解”数据的最简单方法是使用生成器表达式 简单地枚举所有想要的行:

(key for key, val in series.iteritems() for i in range(val))
import pandas as pd

df = pd.DataFrame({'faculty A': [2,4], 'faculty B':[7,3]}, 
                  index=['male students', 'female students'])
df.columns = [re.sub(r'faculty ', '', col) for col in df.columns]
df.index = ['m', 'f']
series = df.stack()
df = pd.DataFrame(
    (key for key, val in series.iteritems() for i in range(val)),
    columns=['gender','faculty'])

产量

   gender faculty
0       m       A
1       m       A
2       m       B
3       m       B
4       m       B
5       m       B
6       m       B
7       m       B
8       m       B
9       f       A
10      f       A
11      f       A
12      f       A
13      f       B
14      f       B
15      f       B

PS。以上显示可以“分解”数据,但您确定 你想那样做吗?分解似乎效率低下。如果其中之一 价值是一百万,那么你最终会得到一百万份 行...

您可能最好找不到对聚合数据执行计算的方法,而不是分解。