Python 替换数据帧中的特定字符串

Python 替换数据帧中的特定字符串,python,pandas,Python,Pandas,我有这样一个数据帧: Basic Stats Min Max Mean Stdev Num Eigenvalue 0 Band 1 0.428944 0.843916 0.689923 0.052534 1 0.229509 1 Band 10 -0.000000 0.689320 0.513170 0.048885 2 0.119217 我想用LG68替换Band 1,用LG69

我有这样一个数据帧:

     Basic Stats    Min       Max      Mean     Stdev    Num  Eigenvalue
0      Band 1    0.428944  0.843916  0.689923  0.052534   1    0.229509
1      Band 10  -0.000000  0.689320  0.513170  0.048885   2    0.119217
我想用
LG68
替换
Band 1
,用
LG69
替换
Band 10

我试过:

df=df.replace({'Band 1': 'LG68', 'Band 10': 'LG69'}, regex=True)
但这也带来了:

     Basic Stats    Min       Max      Mean     Stdev  Num  Eigenvalue
0      LG68     0.428944  0.843916  0.689923  0.052534  1    0.229509
1      LG680   -0.000000  0.689320  0.513170  0.048885  2    0.119217
因为波段10也包含波段1

我也尝试过:

df=df.T
df=df.rename(columns={'Band 1':'LG68', 'Band10': 'LG69'})

但这会悄悄地失败(名称根本没有更改),可能是因为我没有将Band 1和Band 10作为列名,而是实际的行?

也许可以尝试使用
map
函数和
dict
来描述映射关系

df['Basic Stats'] = df['Basic Stats'].map({'Band 1': 'LG68', 'Band 10': 'LG69'})
df

  Basic Stats     Min     Max    Mean   Stdev  Num  Eigenvalue
0        LG68  0.4289  0.8439  0.6899  0.0525    1      0.2295
1        LG69 -0.0000  0.6893  0.5132  0.0489    2      0.1192

可以尝试使用
map
函数和
dict
来描述映射关系

df['Basic Stats'] = df['Basic Stats'].map({'Band 1': 'LG68', 'Band 10': 'LG69'})
df

  Basic Stats     Min     Max    Mean   Stdev  Num  Eigenvalue
0        LG68  0.4289  0.8439  0.6899  0.0525    1      0.2295
1        LG69 -0.0000  0.6893  0.5132  0.0489    2      0.1192

可以尝试使用
map
函数和
dict
来描述映射关系

df['Basic Stats'] = df['Basic Stats'].map({'Band 1': 'LG68', 'Band 10': 'LG69'})
df

  Basic Stats     Min     Max    Mean   Stdev  Num  Eigenvalue
0        LG68  0.4289  0.8439  0.6899  0.0525    1      0.2295
1        LG69 -0.0000  0.6893  0.5132  0.0489    2      0.1192

可以尝试使用
map
函数和
dict
来描述映射关系

df['Basic Stats'] = df['Basic Stats'].map({'Band 1': 'LG68', 'Band 10': 'LG69'})
df

  Basic Stats     Min     Max    Mean   Stdev  Num  Eigenvalue
0        LG68  0.4289  0.8439  0.6899  0.0525    1      0.2295
1        LG69 -0.0000  0.6893  0.5132  0.0489    2      0.1192

您正在将regex设置为true,因此您应该能够只使用regex。添加$以匹配字符串的结尾

df=df.replace({'Band 1$': 'LG68', 'Band 10$': 'LG69'}, regex=True)

您正在将regex设置为true,因此您应该能够只使用regex。添加$以匹配字符串的结尾

df=df.replace({'Band 1$': 'LG68', 'Band 10$': 'LG69'}, regex=True)

您正在将regex设置为true,因此您应该能够只使用regex。添加$以匹配字符串的结尾

df=df.replace({'Band 1$': 'LG68', 'Band 10$': 'LG69'}, regex=True)

您正在将regex设置为true,因此您应该能够只使用regex。添加$以匹配字符串的结尾

df=df.replace({'Band 1$': 'LG68', 'Band 10$': 'LG69'}, regex=True)

您可以通过在
频带1
的末尾添加一个
$
来修复正则表达式,使语句看起来像

df=df.replace({'Band 1$': 'LG68', 'Band 10': 'LG69'}, regex=True)

$
匹配行尾,因此只有当
第1带
后跟字符串或换行符时,
第1带$
才会匹配。您还可以使用只匹配字符串结尾的
\Z

您可以通过在
波段1
的结尾添加
$
来修复正则表达式,使语句看起来像

df=df.replace({'Band 1$': 'LG68', 'Band 10$': 'LG69'}, regex=True)
df=df.replace({'Band 1$': 'LG68', 'Band 10': 'LG69'}, regex=True)

$
匹配行尾,因此只有当
第1带
后跟字符串或换行符时,
第1带$
才会匹配。您还可以使用只匹配字符串结尾的
\Z

您可以通过在
波段1
的结尾添加
$
来修复正则表达式,使语句看起来像

df=df.replace({'Band 1$': 'LG68', 'Band 10$': 'LG69'}, regex=True)
df=df.replace({'Band 1$': 'LG68', 'Band 10': 'LG69'}, regex=True)

$
匹配行尾,因此只有当
第1带
后跟字符串或换行符时,
第1带$
才会匹配。您还可以使用只匹配字符串结尾的
\Z

您可以通过在
波段1
的结尾添加
$
来修复正则表达式,使语句看起来像

df=df.replace({'Band 1$': 'LG68', 'Band 10$': 'LG69'}, regex=True)
df=df.replace({'Band 1$': 'LG68', 'Band 10': 'LG69'}, regex=True)


$
匹配行尾,因此只有当
第1带
后跟字符串或换行符时,
第1带$
才会匹配。您还可以使用只匹配字符串结尾的
\Z

返回
Basic Stats
中的所有值,作为
NaN
@StefanoPotter。您能否在原始数据帧中显示
df['Basic Stats']的结果。值[:5]
?产生的
NaN
通常是
dict
中的键与
Basic Stats
列中的值不匹配的结果。
['Band 1''Band 2''Band 3''Band 4''Band 5']['Band 1''Band 2''Band 3''Band 4''Band 5']
I,有80个乐队编号为1-80我正在这样做for@StefanoPotter因此,每个乐队前面都有一个空格。尝试
.map({'Band 1':'LG68','Band 10':'LG69})
。或者,在映射之前尝试删除前导或尾随空格。实际上不应该有空格…但即使添加了空格,它仍会返回NaN,即返回
Basic Stats
中的所有值,如
NaN
@StefanoPotter您能显示
df['Basic Stats']的结果吗?值[:5]
在原始数据帧中?产生的
NaN
通常是
dict
中的键与
Basic Stats
列中的值不匹配的结果。
['Band 1''Band 2''Band 3''Band 4''Band 5']['Band 1''Band 2''Band 3''Band 4''Band 5']
I,有80个乐队编号为1-80我正在这样做for@StefanoPotter因此,每个乐队前面都有一个空格。尝试
.map({'Band 1':'LG68','Band 10':'LG69})
。或者,在映射之前尝试删除前导或尾随空格。实际上不应该有空格…但即使添加了空格,它仍会返回NaN,即返回
Basic Stats
中的所有值,如
NaN
@StefanoPotter您能显示
df['Basic Stats']的结果吗?值[:5]
在原始数据帧中?产生的
NaN
通常是
dict
中的键与
Basic Stats
列中的值不匹配的结果。
['Band 1''Band 2''Band 3''Band 4''Band 5']['Band 1''Band 2''Band 3''Band 4''Band 5']
I,有80个乐队编号为1-80我正在这样做for@StefanoPotter因此,每个乐队前面都有一个空格。尝试
.map({'Band 1':'LG68','Band 10':'LG69})
。或者,在映射之前尝试删除前导或尾随空格。实际上不应该有空格…但即使添加了空格,它仍会返回NaN,即返回
Basic Stats
中的所有值,如
NaN
@StefanoPotter您能显示
df['Basic Stats']的结果吗?值[:5]
在原始数据帧中?产生的
NaN
通常是
dict
中的键与
Basic Stats
列中的值不匹配的结果。
['波段1''波段2''波段3''波段4'
df=df.replace({'Band 1$': 'LG68', 'Band 10$': 'LG69'}, regex=True)