【发布时间】:2021-08-11 01:54:30
【问题描述】:
我有以下数据框。
| index | Flag | Data |
|---|---|---|
| 0 | 1 | aaaa |
| 1 | 0 | bbbb |
| 2 | 0 | cccc |
| 3 | 0 | dddd |
| 4 | 1 | eeee |
| 5 | 0 | ffff |
| 6 | 1 | gggg |
| 7 | 1 | hhhh |
| 8 | 1 | iiii |
我想获得由 Flag 1 分隔的垂直 Mergedata。
| index | Flag | Data | Mergedata |
|---|---|---|---|
| 0 | 1 | aaaa | aaaabbbbccccdddd |
| 1 | 0 | bbbb | - |
| 2 | 0 | cccc | - |
| 3 | 0 | dddd | - |
| 4 | 1 | eeee | eeeeffff |
| 5 | 0 | ffff | - |
| 6 | 1 | gggg | gggg |
| 7 | 1 | hhhh | hhhh |
| 8 | 1 | iiii | iiii |
也许,我可以用 FOR LOOP 做到这一点。
不过,我相信 pandas 提供的解决方案比上面的更聪明。
/////////////////////////////////////// //////////////////////p>
后记01
对不起。 我无法得到上述结果。
import numpy as np
import pandas as pd
Array01 = np.array([[0, 1, 'aaaa'],
[1, 0, 'bbbb'],
[2, 0, 'cccc'],
[3, 0, 'dddd'],
[4, 1, 'eeee'],
[5, 0, 'ffff'],
[6, 1, 'gggg'],
[7, 1, 'hhhh'],
[8, 1, 'iiii']])
df = pd.DataFrame(data=Array01,columns=['index', 'Flag', 'Data'])
df.loc[df.Flag==1,'newmerge'] = df.groupby(df.Flag.cumsum())['Data'].sum().values
df
【问题讨论】: