我有一个DataFrame:
X Y Z
1 ana python,ms-excel,C++,Aws
2 aba Python,MS-EXCEL,C++,AWS
3 ama Python
我需要知道Z列是否有python,ms-excel。
所以,也许结果看起来是:
X Y Z_new
1 ana 2
2 any 2
3 ama 1
问题是我可以解析,但是列太多了,找出与我需要知道的列名称相似的列是很费劲的。
发布于 2020-02-26 16:18:02
如果有可能在'Z'
中重复,并且您只想数'python'
一次,那么您将nunique
而不是sum。Series.str.extractall
是另一种方式。
df['Z_new'] = (df['Z'].str.lower().str.extractall('(python|ms-excel)')
.groupby(level=0)
.nunique() # .size() to count duplicates
)
X Y Z Z_new
0 1 ana python,ms-excel,C++,Aws 2
1 2 aba Python,MS-EXCEL,C++,AWS 2
2 3 ama Python 1
发布于 2020-02-26 16:07:08
在expand=True
.中使用Series.str.lower
和Series.str.split
然后使用DataFrame.isin
和DataFrame.sum
进行计数:
df['Z-new']=(df['Z'].str.lower()
.str.split(',', expand=True)
.isin(['python', 'ms-excel'])
.sum(axis=1))
print(df)
X Y Z Z-new
0 1 ana python,ms-excel,C++,Aws 2
1 2 aba Python,MS-EXCEL,C++,AWS 2
2 3 ama Python 1
细节
print(df['Z'].str.lower().str.split(',',expand=True))
0 1 2 3
0 python ms-excel c++ aws
1 python ms-excel c++ aws
2 python None None None
https://stackoverflow.com/questions/60417932
复制相似问题