我设置了一个大型数据框,其中包含ID,TotalPopulation和TotalSuccesses。我需要将其转换为每个ID多行,每个ID的总行数=该ID的TotalPopulation。然后,我需要附加“成功”列1或0,并根据TotalSuccesses列分配正确的成功值数。
这是一个小例子:
import pandas as pd
df = pd.DataFrame([['A', 3, 1],
['B', 5, 2],
['C', 4, 2]],
columns = ['ID', 'TotalPopulation', 'TotalSuccesses'])
desired_df = pd.DataFrame([['A', 1],
['A', 0],
['A', 0],
['B', 1],
['B', 1],
['B', 0],
['B', 0],
['B', 0],
['C', 1],
['C', 1],
['C', 0],
['C', 0],],
columns = ['ID', 'Success'])
df
Out[20]:
ID TotalPopulation TotalSuccesses
0 A 3 1
1 B 5 2
2 C 4 2
desired_df
Out[21]:
ID Success
0 A 1
1 A 0
2 A 0
3 B 1
4 B 1
5 B 0
6 B 0
7 B 0
8 C 1
9 C 1
10 C 0
11 C 0
我试图通过以下方法扩展数据集,但是由于数据集的大小,我不确定它是否会完成运行。之后,我找不到分配正确数量的“成功”的好方法。因此,如果需要执行此操作以使其重复,我仍然需要一些帮助来弄清楚如何分配这些“成功”
df2 = pd.DataFrame([df.ix[idx]
for idx in df.index
for _ in range(int(df.ix[idx]['TotalPopulation']))]).reset_index(drop=True)
任何指导表示赞赏!