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



我正在使用聚合数据,我需要将其分解以进一步处理它。原始 df 包含一个值"no"。每行的学生,我需要每个学生在新的 df 中占一行:

原文 df:

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

新 df:

 No.           gender  faculty   ...
 1             m       A
 2             m       A
 3             f       A

等等。原始df包含更多信息(如国籍和地区信息),但可以像处理性别等一样处理。显然,我会从转置(df。T),但随后乐趣开始了...我是初学者,任何指针都非常受欢迎。

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

(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

附言。上面显示了可以"分解"数据,但你确定吗你想这样做吗?分类似乎效率低下。如果其中之一值是一百万,那么你最终会得到一百万重复行。。。

与其

进行分解,不如找到一种方法来对聚合数据执行计算。

最新更新