我正在处理大型数据框,需要一种动态重命名列名的方法。
这是我正在使用的缓慢方法:
# Create a sample dataframe
df = pd.DataFrame.from_records([
{'Name':'Jay','Favorite Color (BLAH)':'Green'},
{'Name':'Shay','Favorite Color (BLAH)':'Blue'},
{'Name':'Ray','Favorite Color (BLAH)':'Yellow'},
])
# Current columns are: ['Name', 'Favorite Color (BLAH)']
# ------
# build two lambdas to clean the column names
f_clean = lambda x: x.split('(')[0] if ' (' in x else x
f_join = lambda x: '_'.join(x.split())
df.columns = df.columns.map(f_clean, f_join).map(f_join).str.lower()
# Columns are now: ['name', 'favorite_color']
有解决这个问题的更好方法吗?
答案 0 :(得分:1)
您可以定义一个b[range(len(b)), np.argmin(a, axis=1)]
函数,并使用列表推导将其应用于所有列。
clean
很清楚发生了什么,但并不过分冗长。