反转熊猫子集数据框中的字符串列

nof*_*tur 5 python string reverse pandas

我有以下数据框。

    ID  LOC Alice   Bob  Karen
0   1   CH  9|5 6|3 4|4
1   2   ES  1|1 0|8 2|0
2   3   DE  2|4 6|6 3|1
3   4   ES  3|9 1|2 4|2
Run Code Online (Sandbox Code Playgroud)

Alice 和 Bob 列包含字符串值。我想以另一列的值为条件反转这些列中的字符串。例如,在 LOC==ES 处,反转相应列中的字符串将如下所示:

    ID  LOC Alice   Bob   Karen
0   1   CH  9|5 6|3 4|4
1   2   ES  1|1 8|0 0|2
2   3   DE  2|4 6|6 3|1
3   4   ES  9|3 2|1 2|4
Run Code Online (Sandbox Code Playgroud)

是否有一种快速方法可以对具有数千行的 csv 文件中的所有匹配行执行此操作?

谢谢你。

Max*_*axU 5

#cols = ['Alice','Bob']
In [17]: cols = df.columns.drop(['ID','LOC'])

In [18]: df.loc[df.LOC=='ES', cols] = df.loc[df.LOC=='ES', cols].apply(lambda x: x.str[::-1])

In [19]: df
Out[19]:
   ID LOC Alice  Bob Karen
0   1  CH   9|5  6|3   4|4
1   2  ES   1|1  8|0   0|2
2   3  DE   2|4  6|6   3|1
3   4  ES   9|3  2|1   2|4
Run Code Online (Sandbox Code Playgroud)


cs9*_*s95 3

使用df.loc来获取行切片,然后使用 和 来对和列应用字符串反转[::-1]操作。AliceBobdf.applymap

In [533]: df.loc[df['LOC'] == 'ES', ['Alice', 'Bob']] = \
                 df.loc[df['LOC'] == 'ES', ['Alice', 'Bob']].applymap(lambda x: x[::-1])

In [534]: df
Out[534]: 
   ID LOC Alice  Bob Karen
0   1  CH   9|5  6|3   4|4
1   2  ES   1|1  8|0   2|0
2   3  DE   2|4  6|6   3|1
3   4  ES   9|3  2|1   4|2
Run Code Online (Sandbox Code Playgroud)