我有一个如下所示的数据框DF
(这是一个示例):
EQ1 EQ2 EQ3
0 Apple.fruit Oranage.eatable.fruit NaN
1 Pear.eatable.fruit Banana.fruit NaN
2 Orange.fruit Tomato.eatable Potato.eatable.vegetable
3 Kiwi.eatable Pear.fruit Cabbage.vegetable
<And so on.. It is a large Dataframe>
我想在.
的每个元素中移除 AFTER 最后一次出现点DF
并将其保存为其他名称,例如{{1} }。
期望的输出:
df_temp
这是我试过的:
EQ1 EQ2 EQ3
0 Apple Oranage.eatable NaN
1 Pear.eatable Banana NaN
2 Orange Tomato Potato.eatable
3 Kiwi Pear Cabbage
<And so on>
。
不幸的是,这似乎只适用于字符串而不是Dataframe。我是否需要稍微调整一下这条线来实现我想要的?有人请帮忙!
答案 0 :(得分:6)
你可以这样做:
df_temp = df.apply(lambda x: x.str.split('.').str[:-1].str.join('.'))
输出:
EQ1 EQ2 EQ3
0 Apple Oranage.eatable NaN
1 Pear.eatable Banana NaN
2 Orange Tomato Potato.eatable
3 Kiwi Pear Cabbage
答案 1 :(得分:1)
您可以使用提取。
df_temp = df.apply(lambda x: x.str.extract(r'.*\.([^\.]*)', expand=False))
df_new = df.apply(lambda x: x.str.extract(r'(.*)\.[^\.]*', expand=False))
df_temp
看起来像:
EQ1 EQ2 EQ3
0 fruit fruit NaN
1 fruit fruit NaN
2 fruit eatable vegetable
3 eatable fruit vegetable
df_new
看起来像:
EQ1 EQ2 EQ3
0 Apple Oranage.eatable NaN
1 Pear.eatable Banana NaN
2 Orange Tomato Potato.eatable
3 Kiwi Pear Cabbage