我想像這樣分隔“alpha”列中的值
開始:
| α | 測驗版 | 伽瑪 |
|---|---|---|
| 一種 | 1 | 0 |
| 一種 | 1 | 1 |
| 乙 | 1 | 0 |
| 乙 | 1 | 1 |
| 乙 | 1 | 0 |
| C | 1 | 1 |
結尾:
| α | 測驗版 | 伽瑪 |
|---|---|---|
| 一種 | 1 | 0 |
| 一種 | 1 | 1 |
| X | X | X |
| 乙 | 1 | 0 |
| 乙 | 1 | 1 |
| 乙 | 1 | 0 |
| X | X | X |
| C | 1 | 1 |
感謝您的幫助<3
uj5u.com熱心網友回復:
你可以試試
out = (df.groupby('alpha')
.apply(lambda g: pd.concat([g, pd.DataFrame([['X', 'X', 'X']], columns=df.columns)]))
.reset_index(drop=True))
print(out)
alpha beta gamma
0 A 1 0
1 A 1 1
2 X X X
3 B 1 0
4 B 1 1
5 B 1 0
6 X X X
7 C 1 1
8 X X X
uj5u.com熱心網友回復:
假設示例中的范圍索引,您可以使用:
# get indices in between 2 groups
idx = df['alpha'].ne(df['alpha'].shift(-1).ffill())
df2 = pd.concat([df, df[idx].assign(**{c: 'X' for c in df})]).sort_index(kind='stable')
或者沒有groupbyand sort_index:
idx = df['alpha'].ne(df['alpha'].shift(-1).ffill())
df2 = df.loc[df.index.repeat(idx 1)]
df2.loc[df2.index.duplicated()] = 'X'
輸出:
alpha beta gamma
0 A 1 0
1 A 1 1
1 X X X
2 B 1 0
3 B 1 1
4 B 1 0
4 X X X
5 C 1 1
注意。添加reset_index(drop=True)以獲取新索引
uj5u.com熱心網友回復:
你可以做:
dfx = pd.DataFrame({'alpha':['X'],'beta':['X'],'gamma':['X']})
df = df.groupby('alpha',as_index=False).apply(lambda x:x.append(dfx)).reset_index(drop=True)
輸出:
alpha beta gamma
0 A 1 0
1 A 1 1
2 X X X
3 B 1 0
4 B 1 1
5 B 1 0
6 X X X
7 C 1 1
8 X X X
為避免在末尾添加 [X, X, X] ,您可以先檢查索引,例如:
df.groupby('alpha',as_index=False).apply(
lambda x:x.append(dfx)
if x.index[-1] != df.index[-1] else x).reset_index(drop=True)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/480587.html
