我在datafrme结构中有一列:
df = pd.DataFrame({'Config': ['1A', '1A, 7A', '3C, 3C-7A', '1A, 3A, 1A-3A']})
print(df)
Config
0 1A
1 1A, 7A
2 3C, 3C-7A
3 1A, 3A, 1A-3A
如果单元格中有XX-XX
,请删除重复的上一项。
例如,在第2行和第3行中,将删除3C
,1A
和3A
(或创建一个新列):
Config
0 1A
1 1A, 7A
2 3C-7A
3 1A-3A
非常感谢。
原始数据清单:
df = pd.DataFrame({'Config': ['1A', '1A, 7A', '3C, 3C-7A', '1A, 3A, 1A-3A', '5A, 3C-7A']})
df
Config
0 1A
1 1A, 7A
2 3C, 3C-7A
3 1A, 3A, 1A-3A
4 5A, 3C-7A
目标:
Config
0 1A
1 1A, 7A
2 3C-7A
3 1A-3A
4 5A, 3C-7A
第2行和第3行:
3C
与3C-7A
重复
1A
和3A
与1A-3A
重复
因此请删除3C
,1A
,3A
。
在第4行中:
原因5A
与3C-7A
中的值不重复,因此两个值5A
和3C-7A
都保留。
答案 0 :(得分:1)
如果您的数据遵循相同的位置,那么它将对您有用
df.loc[df['Config'].str.contains('-'),'Config']=df['Config'].str.split(',').str.get(-1)
输出:
Config
0 1A
1 1A, 7A
2 3C-7A
3 1A-3A
说明:
它将值除以,
并取其最后一个值,该值在系列中为-
。
EDIT-1
print df['Config'].str.split(', |-').apply(set)
Output:
0 {1A}
1 {1A, 7A}
2 {3C, 7A}
3 {1A, 3A}
4 {3C, 5A, 7A}