以下代码:
import pandas as pd
df = pd.DataFrame({'col':['A', '1', '2', '3', 'B', '4', '5', 'C', '7', '8', '10']})
生成以下数据框:
col
0 A
1 1
2 2
3 3
4 B
5 4
6 5
7 C
8 7
9 8
10 10
我想提出一种良好的、pandas 友好的方法来根据字母“A”、“B”或“C”的出现对数据框进行切片。预期结果如下:
col col2
1 1 A
2 2 A
3 3 A
5 4 B
6 5 B
8 7 C
9 8 C
10 10 C
我怎样才能做到这一点?
最佳答案
创建一个掩码来找到要拆分的行。创建col2
,带有掩码的 bool 索引,用完整的原始索引重新索引,前向填充缺失值。对于 col1
, 复制原文col
.然后创建最终的 df
并用掩码的否定进行索引。
mask = df['col'].isin(['A', 'B', 'C']) # could use df['col'].str.isalpha() also
col2 = df['col'][mask].reindex(df.index).ffill()
col1 = df['col']
df = pd.DataFrame({'col1':col1, 'col2':col2})[~mask]
结果(df
):
col1 col2
1 1 A
2 2 A
3 3 A
5 4 B
6 5 B
8 7 C
9 8 C
10 10 C
关于python - 如何根据指定行后的位置对 Pandas 数据框进行切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68086175/