我有一个这样的数据框
import pandas as pd
all_data_set = [
('A','Area1','AA','A B D E','A B','D E'),
('B','Area1','AA','A B D E','A B','D E'),
('C','Area2','BB','C','C','C'),
('E','Area1','CC','A B D E','A B','D E'),
('F','Area3','BB','F G','G','F')
]
all_df = pd.DataFrame(data = all_data_set, columns = ['Name','Area','Type','Group','AA members','CC members'])
Name Area Type Group AA members CC members
0 A Area1 AA A B D E A B D E
1 B Area1 AA A B D E A B D E
2 C Area2 BB C C C
3 E Area1 CC A B D E A B D E
4 F Area3 BB F G G F
最后一行(第4行)正确。
任何类型为BB的都应该只在
Group
AA members
CC members
所以应该是这样的:
4 F Area3 BB F F F
-
类型为时检查
BB
和长度
组
is=2项如下:
df = (all_data_set.loc[(all_data_set['Type']== 'BB')]['Group'].str.split().str.len() == 2)
-
然后遍历每一行并找到如下情况
-
使用所有放置行创建新的Df,并使组、AA成员、CC成员=名称
-
将发生这种情况的行放在
all_df
-
合并
3.
返回到
all\u df
有没有更好的方法可以做到这一点?