Python 通过比较行创建新列
我的数据框看起来像这样Python 通过比较行创建新列,python,pandas,dataframe,string-comparison,Python,Pandas,Dataframe,String Comparison,我的数据框看起来像这样 df = pd.Dataframe({ 'a': ["10001", "10001", "10002", "10002" , "10002"], 'b': ['hello', 'hello', 'hola', 'hello', 'hola']}) 我想创建一个新的布尔值列“c”,条件如下: 如果“a”的值相同(即第1行和第2行、第3行和第4行以及第5行),请检查这些行的“b”值是否相同。(第2行返回True。第4行返回False) 如果“a”的值不相同,请跳过 我当
df = pd.Dataframe({ 'a': ["10001", "10001", "10002", "10002" , "10002"], 'b': ['hello', 'hello', 'hola', 'hello', 'hola']})
我想创建一个新的布尔值列“c”,条件如下:
- 如果“a”的值相同(即第1行和第2行、第3行和第4行以及第5行),请检查这些行的“b”值是否相同。(第2行返回True。第4行返回False)
- 如果“a”的值不相同,请跳过
def check_consistency(col1,col2):
df['match'] = df[col1].eq(df[col1].shift())
t = []
for i in df['match']:
if i == True:
t.append(df[col2].eq(df[col2].shift()))
check_consistency('a','b')
它返回错误。我想这是
groupby
df.groupby('a').b.apply(lambda x : x==x.shift())
Out[431]:
0 False
1 True
2 False
3 False
4 False
Name: b, dtype: bool
按位&应执行以下操作:检查两个条件是否都满足:
df['c'] = (df.a == df.a.shift()) & (df.b == df.b.shift())
df.c
#0 False
#1 True
#2 False
#3 False
#4 False
#Name: c, dtype: bool
或者,如果希望使当前代码正常工作,可以执行以下操作(基本上执行与上面相同的检查):
请为您提供的示例显示所需的输出。请提供
def check_consistency(col1,col2):
df['match'] = df[col1].eq(df[col1].shift())
for i in range(len(df['match'])):
if (df['match'][i] == True):
df.loc[i,'match'] = (df.loc[i, col2] == df.loc[i-1, col2])
check_consistency('a','b')