我想从数据框中的所有列名称中删除前缀。
我尝试创建udf并在for循环中调用
def remove_prefix(str, prefix):
if str.startswith(blabla):
return str[len(prefix):]
return str
for x in df.columns:
x.remove_prefix()
答案 0 :(得分:3)
您可以使用str.lstrip
从列名中删除前缀,这样可以避免循环和检查其中是否包含前缀:
# Example dataframe
df = pd.DataFrame(columns=['pre_A', 'pre_B', 'C'])
df.columns = df.columns.str.lstrip('pre_')
结果:
print(df.columns)
# Index(['A', 'B', 'C'], dtype='object')
注意:这还将删除pre_
之前出现的另一个事件,即所有左侧连续出现的事件。
答案 1 :(得分:2)
在replace
中使用list-comprehension
:
df.columns = [i.replace(prefix,"") for i in df.columns]
答案 2 :(得分:1)
使用Series.str.replace
与正则表达式TASK [copy : set_fact] *******************************************************************************************************************************************************************************************************************************************************************************************************
skipping: [localhost] => (item={u'version': u'1.1', u'name': u'ace-editor'})
ok: [localhost] => (item={u'version': u'1.95', u'name': u'analysis-core'})
skipping: [localhost] => (item={u'version': u'1.9', u'name': u'ant'})
skipping: [localhost] => (item={u'version': u'1.5', u'name': u'antisamy-markup-formatter'})
skipping: [localhost] => (item={u'version': u'4.5.5-3.0', u'name': u'apache-httpcomponents-client-4-api'})
TASK [copy : debug] **********************************************************************************************************************************************************************************************************************************************************************************************************
ok: [localhost] => {
"analysis-core-version": "VARIABLE IS NOT DEFINED!"
}
来匹配字符串的开头:
^
另一种解决方案是将列表理解与df = pd.DataFrame(columns=['pre_A', 'pre_B', 'pre_predmet'])
df.columns = df.columns.str.replace('^pre_', '')
print (df)
Empty DataFrame
Columns: [A, B, predmet]
Index: []
一起使用:
re.sub
答案 3 :(得分:0)
您可以使用header=None
来读取没有标题的文件:
pandas.read_csv(filepath_or_buffer=filename, header=None, sep=',')
答案 4 :(得分:0)
使用rename
方法,该方法接受用于列名称的功能
def remove_prefix(prefix):
return lambda x: x[len(prefix):]
frame = pd.DataFrame(dict(x_a=[1,2,3], x_b=[4,5,6]))
frame = frame.rename(remove_prefix('x_'), axis='columns')