我正在使用汇总数据,我需要进行反汇总才能进一步处理。原始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)开始,但随后乐趣开始......我非常喜欢初学者,任何指针都会非常受欢迎。
答案 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。以上显示可以“分解”数据,但您确定 你想那样做吗?分解似乎效率低下。如果其中之一 价值是一百万,那么你最终会得到一百万份 行...
您可能最好找不到对聚合数据执行计算的方法,而不是分解。