我发现自己正在对各种[pandas][1]
DataFrame进行重复性任务,所以我做了一个函数来进行处理。如何修改函数df
中的process_df(df)
,以便调用者看到所有更改(不指定返回值)?
代码的简化版本:
def process_df(df):
df.columns = map(str.lower, df.columns)
df = pd.DataFrame({'A': [1], 'B': [2]})
process_df(df)
print df
A B 0 1 2
编辑新代码:
def process_df(df):
df = df.loc[:, 'A']
df = pd.DataFrame({'A': [1], 'B': [2]})
process_df(df)
print df
A B 0 1 2
答案 0 :(得分:4)
使用DataFrame
,ix
,loc
等索引iloc
会返回基础数据的视图(这是一个读取操作)。要修改框架的内容,您需要使用就地变换。例如,
def process_df(df):
# drop all columns except for A
df.drop(df.columns[df.columns != 'A'], axis=1, inplace=True)
df = DataFrame({'A':[1,2,3], 'B':[1,2,3]})
process_df(df)
要更改列的顺序,您可以执行以下操作:
def process_df(df):
# swap A and B
df.columns = ['B', 'A']
df[['B', 'A']] = df[['A', 'B']]