pandas: groupby 两列和 return diff for string column
pandas: groupby two columns and return diff for string column
我有一个如下所示的数据框:
import pandas as pd
data = {'First': ['First value','Third value','Second value','First value','Third value','Second value','Third value','Second value','First value','Third value'],
'Second': ['A','B','A','A','C','B','C','B','B','D']}
df = pd.DataFrame (data, columns = ['First','Second'])
我想将这两列分组,并且 return 将第一列中每个值缺失的相应值放在单独的列中。因此,例如,第一列中的 'First value' 没有第二列中的 B、C 值,依此类推。
期望的输出:
First unmatched value
First value D,C
Second value C,D
Third value A
我试过:
df.groupby('First')['Second'].diff()
但它不适用于字符串并且return是一个错误
使用set
:
all_values = set(df["Second"])
#{'C', 'D', 'B', 'A'}
f = lambda x: all_values - set(x)
df.groupby("First")["Second"].apply(f)
#First
#First value {C, D}
#Second value {C, D}
#Third value {A}
我有一个如下所示的数据框:
import pandas as pd
data = {'First': ['First value','Third value','Second value','First value','Third value','Second value','Third value','Second value','First value','Third value'],
'Second': ['A','B','A','A','C','B','C','B','B','D']}
df = pd.DataFrame (data, columns = ['First','Second'])
我想将这两列分组,并且 return 将第一列中每个值缺失的相应值放在单独的列中。因此,例如,第一列中的 'First value' 没有第二列中的 B、C 值,依此类推。
期望的输出:
First unmatched value
First value D,C
Second value C,D
Third value A
我试过:
df.groupby('First')['Second'].diff()
但它不适用于字符串并且return是一个错误
使用set
:
all_values = set(df["Second"])
#{'C', 'D', 'B', 'A'}
f = lambda x: all_values - set(x)
df.groupby("First")["Second"].apply(f)
#First
#First value {C, D}
#Second value {C, D}
#Third value {A}