将 DataFrame 的最后一列附加到另一个 DataFrame

Attach last column of DataFrame to another DataFrame

我有一个很大的 csv 文件,我将其转换为 pandas.DataFrame。之后,我将这个数据框分成几个较小的数据框,对其进行处理并将每个数据框转换回 csv 文件。

在处理步骤中,我需要将原始数据框的最后一列附加到较小的数据框。我试着用 df.iloc[:,-1]df.ix[:,-1].

来做

当我这样做时:

        rating_column = df.iloc[:,-1]    #get last column from original dataframe
        print(rating_column)

我得到正确的结果:

        timestamp
        2015-07-22 21:40:00    passed
        2015-07-22 21:50:00    passed
        2015-07-22 22:00:00    passed
        2015-07-22 22:10:00    failed

但是当我将该列添加到带有 small_df['rating'] = rating_column 的较小数据框时,small_df 仅包含该列的 NaN:

        timestamp              average       rating
        2015-07-22 21:40:00         73       NaN
        2015-07-22 21:50:00         74       NaN
        2015-07-22 22:00:00         73       NaN
        2015-07-22 22:10:00        NaN       NaN

如何在不获取 NaN 值的情况下将此列附加到 small_df

这是读取csv文件的代码:

import pandas as pd
with open(filename, 'r') as csvfile:
        df = pd.read_csv(csvfile, 
                parse_dates=True, 
                index_col=0, 
                sep=';',
                header=None, 
                skipinitialspace=True, 
                low_memory=False, 
                names=range(0,amount_of_columns))

这是因为索引值不匹配,所以它会尝试使用索引对齐。尝试将列添加为普通 np 数组值:

small_df['rating'] = rating_column.values

但是,以上假定顺序匹配所有 csv,如果您有一些标识符列,那么最好 join/merge 使用它以使行值对齐。