我有一个dataframe,它有一列数据,如下所示:
AAH.
AAH.
AAR.UN
AAR.UN
AAR.UN
AAR.UN
AAV.
AAV.
AAV.我认为我需要使用apply方法来修剪列数据。因此,如果句点后有任何变化,请保持数据不变,但如果句点后没有任何内容,则只返回字母,末尾不带句点。我知道我可以使用lambda函数,或者字符串拆分或其他方法来实现这一点,但我没有太多的想法来实现它。
这就是我到目前为止所知道的:
df.apply(lambda x: string.split('.'))我不确定是否可以这样使用if语句或带有lambda函数的其他东西?
如有任何指导,敬请惠顾。
发布于 2014-12-27 02:43:24
由于只有一列,您可以通过.str (docs)利用矢量化字符串操作:
>>> df
0
0 AAH.
1 AAH.
2 AAR.UN
3 AAR.UN
4 AAR.UN
5 AAR.UN
6 AAV.
7 AAV.
8 AAV.
>>> df[0] = df[0].str.rstrip('.')
>>> df
0
0 AAH
1 AAH
2 AAR.UN
3 AAR.UN
4 AAR.UN
5 AAR.UN
6 AAV
7 AAV
8 AAV否则,你将不得不做一些像df.applymap(lambda x: x.rstrip("."))这样的事情,或者下拉到numpy char方法。
发布于 2014-12-27 02:56:18
您也可以使用lambda函数来完成此操作:
>>> L = [['AAH.'],
['AAR.UN'],
['AAR.UN'],
['AAV.'],
['AAV.']]
>>> df = pd.DataFrame(L)
>>> M = lambda x: x[0][:-1] if x[0][-1]=='.' else x[0][:]
>>> df = df.apply(M, axis=1)
>>> df
0 AAH
1 AAR.UN
2 AAR.UN
3 AAV
4 AAV发布于 2018-06-30 23:34:08
def change_to_date(string):
seq = (string[:2],string[2:5],string[5:])
return '-'.join(seq)
pt['DATE'] = pt['DATE'].apply(change_to_date)对于类似的问题,我对列应用了一个简单的函数来操作所有字符串值。
https://stackoverflow.com/questions/27660583
复制相似问题