熊猫:从其他数据帧信息创建数据帧行
问题描述:
我正在处理汇总数据,为了进一步处理它,需要对其进行分解。原始的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
PS。以上显示可以“分解”数据,但您确定要这样做吗?分解似乎相当低效。如果 的一个值是一百万,那么你最终会得到一百万重复 行...
而是分列的,你可能会更好找对汇总数据进行计算的一种方式。
谢谢你,为我工作。我不确定分散聚合是否是这里的正确步骤,但它最终应该允许我与另一个“聚合”数据集进行交叉参考。当然,你对“巨大”的价值观是正确的。 –