【发布时间】:2021-06-05 07:14:25
【问题描述】:
我有以下数据框:
Vela FlgVela
0 R 0
1 V 1
2 V 1
3 R 1
4 R 1
5 V 0
6 R 1
7 R 1
8 R 1
获得以下数据框结果的最佳方法是什么?
Vela FlgVela AddCol
0 R 0 1
1 V 1 2
2 V 1 2
3 R 1 3
4 R 1 3
5 V 0 4
6 R 1 5
7 R 1 5
8 R 1 5
我尝试了以下逻辑,但结果不是我所期望的。
df['AddCol'] = df.groupby(df['Vela'].astype(str).str.strip() != df['Vela'].shift(-1).astype(str).str.strip() ).cumcount()+1
【问题讨论】:
-
请说明附加栏的填写规则。
-
df['Vela'].astype(str).str.strip()应该是完全没有必要的,这使得它很难阅读。这是一种代码气味,当您在数据帧中读取时,您处理了错误的数据类型、分隔符或空格,因此您得到了不需要的前导或尾随空格。修复您的pd.read_csv()设置。实际上,如果您将其转换为“字符串”,则 dtype 可能默认为“对象”而不是“字符串”,因此请指定pd.read_csv(..., dtype={'Vela':str, ...})
标签: python pandas dataframe cumsum