用其他列的值替换字符串的一部分

2024-10-01 00:16:56 发布

您现在位置:Python中文网/ 问答频道 /正文

问题

我有一个CSV文件充满了这样的数据

 rowid       filepath              curr_time    cameraid    old_cameraid
    0        1/1_20180625_234436.jpg    2018-06-25 23:44:36 1       19
    1        1/1_20180626_005104.jpg    2018-06-26 00:51:04 1       19
    2        1/1_20180626_015735.jpg    2018-06-26 01:57:35 1       19
    3        1/1_20180626_030430.jpg    2018-06-26 03:04:30 1       19
    ...
    2605    2/2_20180622_064322.jpg     2018-06-22 06:43:22 2       64
    2606    2/2_20180622_074326.jpg     2018-06-22 07:43:26 2       64
    2607    2/2_20180622_084332.jpg     2018-06-22 08:43:32 2       64

我想做什么

我要使用旧的\u cameraid字符串值替换文件路径号:

rowid   filepath    curr_time   cameraid    old_cameraid
0       19/19_20180625_234436.jpg       2018-06-25 23:44:36 1    19
...
2605    64/64_20180622_064322.jpg       2018-06-22 06:43:22 2       64

我尝试过的

我试过用

df.apply(lambda x: x['filepath'].replace('a',x['b']), axis=1)

从这个This StackOverflow question但是我不是替换'a',而是替换filepath列中字符串的一部分。因此,这不起作用,我也不确定。你知道吗

我也为行的格式表示歉意。我试图在stackoverflow问题中搜索如何正确格式化行,但找不到正确的信息。你知道吗


Tags: 文件csv数据lambda字符串路径dftime
1条回答
网友
1楼 · 发布于 2024-10-01 00:16:56

你可以把它们加在一起,我假设所有的文件路径都有相同的语法

1/1_20180625_234436.jpg

df['filepath'] = df['old_cameraid'].astype(str) + '/' + df['filepath'].astype(str).map(lambda x: x.split('/')[-1])

相关问题 更多 >