Pandas 如何在Python中提取一列中具有相同值且第二列中具有相反值的行集
我有一个这样的数据帧 日期AB统计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列创建一个新的数据帧,这样我的输出将是: 日期
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列创建一个新的数据帧,这样我的输出将是: 日期
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