2024-06-02 08:22:00 发布
网友
我有这样一个数据帧:
A C1 C2 Total PRODUCT1 8 11 19 rs1 5 9 14 rs2 2 2 4 rs3 1 0 1 PRODUCT2 21 12 33 rs7 11 7 18 rs2 7 3 10 rs1 3 1 4 rs9 0 1 1 PRODUCT3 2 11 13 rs9 1 6 7 rs5 1 5 6
列A是由字符串组成的,我想按此列中的值拆分数据帧,特别是其中的每个上面的单词。像这样:
有没有一个简单的方法来实现这一点?在
import pandas as pd df = pd.DataFrame({'A': ['PRODUCT1', 'rs1', 'rs2', 'rs3', 'PRODUCT2', 'rs7', 'rs2', 'rs1', 'rs9', 'PRODUCT3', 'rs9', 'rs5'], 'C1': [8, 5, 2, 1, 21, 11, 7, 3, 0, 2, 1, 1], 'C2': [11, 9, 2, 0, 12, 7, 3, 1, 1, 11, 6, 5], 'Total': [19, 14, 4, 1, 33, 18, 10, 4, 1, 13, 7, 6]}) for key, group in df.groupby(df['A'].str.isupper().cumsum()): print(group)
印刷品
这里的想法是识别大写的行:
In [95]: df['A'].str.isupper() Out[95]: 0 True 1 False 2 False 3 False 4 True 5 False 6 False 7 False 8 False 9 True 10 False 11 False Name: A, dtype: bool
然后使用cumsum取累计和,其中True被视为1,False被视为0:
cumsum
True
False
In [96]: df['A'].str.isupper().cumsum() Out[96]: 0 1 1 1 2 1 3 1 4 2 5 2 6 2 7 2 8 2 9 3 10 3 11 3 Name: A, dtype: int64
这些值可用作组号。将它们传递给df.groupby,根据这些分组号对数据帧进行分组。df.groupby(...)返回一个iterable,它允许您在子组中循环。在
df.groupby
df.groupby(...)
印刷品
^{pr2}$这里的想法是识别大写的行:
然后使用
cumsum
取累计和,其中True
被视为1,False
被视为0:这些值可用作组号。将它们传递给
df.groupby
,根据这些分组号对数据帧进行分组。df.groupby(...)
返回一个iterable,它允许您在子组中循环。在相关问题 更多 >
编程相关推荐