我是熊猫的新手,所以想根据excel文件寻求帮助。 在这里,我有第1列的工作表:
Index Column1
1 PF7293
2 NodeB Name=SN5208, LogicRNCID=106
3 KL5083
4 Label=DL7765A3U-2, CellID=28643, LogicRNCID=201
我想创建另一个column2
,它应该包含column1
中的一些单词,看起来像这样:
Index Column2
1 PF7293
2 SN5208
3 KL5083
4 DL7765
在excel中,我们使用了MID
。我想用熊猫做同样的事情。谢谢!
问题2
新工作表如下:
Column1 Column2
KL7110 BTS works
KS5007 BSS works
KL5066 Planned works
KL5147 Planned works
KL5066 Unplanned work
KL5077 Power work
KL5077 Power work
AN9045 MW work
我想从第2列中删除相同的值,作为第1列中的一个值。 例如,这里是列1中的2 KL5077,列2中的值相同,我想删除其中之一。 第二个问题是Column1中的2 KL5066在Column2中具有不同的值,在这种情况下,我想将Column2中的值放在一起,例如“计划中的工作/计划外的工作”。希望我已经解释清楚了))
答案 0 :(得分:3)
您可以尝试Series.str.extract
:
df['Column2'] = df['Column1'].str.extract(r'([A-Z]{2}\d{4})')
这里的regex
模式可以是“ 2个大写字母”后跟“ 4位数字”
[出]
Index Column1 Column2
0 1 PF7293 PF7293
1 2 NodeB Name=SN5208, LogicRNCID=106 SN5208
2 3 KL5083 KL5083
3 4 Label=DL7765A3U-2, CellID=28643, LogicRNCID=201 DL7765
第二个问题:
1)要删除重复的行,请使用:
df.drop_duplicates(subset=['Column1', 'Column2'], inplace=True)
2)要连接多个“ Column2”值,请使用:
df_new = df.groupby('Column1')['Column2'].apply('/'.join).reset_index()
[出]
Column1 Column2
0 AN9045 MW work
1 KL5066 Planned works/Unplanned work
2 KL5077 Power work
3 KL5147 Planned works
4 KL7110 BTS works
5 KS5007 BSS works