Sha*_*ang 6 python string-matching dataframe pandas
我有一个pandas Dataframe,其中一列是文件列表
import pandas as pd
df = pd.read_csv('fname.csv')
df.head()
filename A B C
fn1.txt 2 4 5
fn2.txt 1 2 1
fn3.txt ....
....
Run Code Online (Sandbox Code Playgroud)
我想删除.txt每个条目中的文件扩展名filename.我该如何做到这一点?
我试过了:
df['filename'] = df['filename'].map(lambda x: str(x)[:-4])
Run Code Online (Sandbox Code Playgroud)
但是当我查看之后的列条目时df.head(),没有任何改变.
怎么做到这一点?
jez*_*ael 10
我认为你可以使用str.replace正则表达式.txt$'($- 匹配字符串的结尾):
import pandas as pd
df = pd.DataFrame({'A': {0: 2, 1: 1},
'C': {0: 5, 1: 1},
'B': {0: 4, 1: 2},
'filename': {0: "txt.txt", 1: "x.txt"}},
columns=['filename','A','B', 'C'])
print df
filename A B C
0 txt.txt 2 4 5
1 x.txt 1 2 1
df['filename'] = df['filename'].str.replace(r'.txt$', '')
print df
filename A B C
0 txt 2 4 5
1 x 1 2 1
df['filename'] = df['filename'].map(lambda x: str(x)[:-4])
print df
filename A B C
0 txt 2 4 5
1 x 1 2 1
df['filename'] = df['filename'].str[:-4]
print df
filename A B C
0 txt 2 4 5
1 x 1 2 1
Run Code Online (Sandbox Code Playgroud)
编辑:
rstrip可以去除更多的字符,如果字符串的末尾包含条纹串的一些字符(在这种情况下.,t,x):
例:
print df
filename A B C
0 txt.txt 2 4 5
1 x.txt 1 2 1
df['filename'] = df['filename'].str.rstrip('.txt')
print df
filename A B C
0 2 4 5
1 1 2 1
Run Code Online (Sandbox Code Playgroud)
您可以使用str.rstrip删除结尾:
df['filename'] = df['filename'].str.rstrip('.txt')
Run Code Online (Sandbox Code Playgroud)
应该管用
| 归档时间: |
|
| 查看次数: |
15860 次 |
| 最近记录: |