Pandas 如何在Python中提取一列中具有相同值且第二列中具有相反值的行集

Pandas 如何在Python中提取一列中具有相同值且第二列中具有相反值的行集,pandas,python-2.7,loops,dataframe,loc,Pandas,Python 2.7,Loops,Dataframe,Loc,我有一个这样的数据帧 日期AB统计 1-1月M日开始 1-1月K0 0 1月T日b开始 1-1月N日结束 1-1月W 0 1-1月R-b结束 实际上,a和b表示以start开始并以Stat列的end值结束的活动。Act列表示活动编号。我想基于B和Stat列创建一个新的数据帧,这样我的输出将是: 日期

我有一个这样的数据帧

日期AB统计
1-1月M日开始
1-1月K0 0
1月T日b开始
1-1月N日结束
1-1月W 0
1-1月R-b结束

实际上,a和b表示以start开始并以Stat列的end值结束的活动。Act列表示活动编号。我想基于BStat列创建一个新的数据帧,这样我的输出将是:

日期
1-1月Ma开始1
1-1月K 0 01
1-1月b日开始1
1-1月Na结束1
1-1月Tb开始2
1-1月N日结束2
1-1月W 02
1-1月Rb结束2


Act列表示活动编号。任何帮助都将不胜感激。

听起来像是你在统计栏中寻找“开始”的cumsum。 差不多和

>


您的b启动和a结束开关是如何在输出中放置的?@kztd谢谢。但实际上我需要一个从第一行开始的循环,用列B(例如a)和Stat(例如start)的值存储它的索引。然后检查下一行(即a)中B列中的相同值,但统计值相反(即end)。因此,找到后,提取行集并将其命名为Act 1。同样,取第二行,检查B列中的相似值和Stat列中的相反值,然后用Act 2保存,依此类推。谢谢。但很抱歉,问题仍然没有解决。对于第一行和最后一行具有相同的列B值但列Stat值相反的行集合,我希望值为1。
cols = ["Date", "A", "B", "Stat"]
strs = ["1-jan M a start",
"1-jan K 0 0",
"1-jan T b start",
"1-jan N a end",
"1-jan W 0 0",
"1-jan R b end"
       ]

list = []
for str in strs:
    items = str.split(" ")
    list.append(items)
print(list)
df = pd.DataFrame(list, columns=cols)
df["StartCount"] = (df['Stat'] == 'start').cumsum()
print(df)
    Date  A  B   Stat  StartCount
0  1-jan  M  a  start           1
1  1-jan  K  0      0           1
2  1-jan  T  b  start           2
3  1-jan  N  a    end           2
4  1-jan  W  0      0           2
5  1-jan  R  b    end           2