我正在使用聚合数据,我需要将其分解以进一步处理它。原始 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
附言。上面显示了可以"分解"数据,但你确定吗你想这样做吗?分类似乎效率低下。如果其中之一值是一百万,那么你最终会得到一百万重复行。。。
与其进行分解,不如找到一种方法来对聚合数据执行计算。