2017-02-04 113 views
0

我有一個熊貓數據幀從構成這樣一個CSV文件中讀取值的其餘部分:在大熊貓追加一個列表的列在複製

x_column y_column number_column 
---   ----  ---- 
---   ----  ---- 
xxx   yyyy  1 
xxx   yyyy  2 
xxx   yyyy  35 
xxx   yyyy  42 

與破折號行代表了一些額外的數據在我想保留的csv文件的開頭。

我有一個數字列表,我想要附加到'number_column'。該列表本身長500,000個值。我想將列表追加到列中,保持number_column的現有值在同一個地方並且未被更改。

我還希望x_column和y_column的值對於剛添加的每一行都是相同的,如示例中所示。我目前的做法僅僅是一個簡單的循環,追加值一次一個:

for num in number_list: 

     data_df = data_df.append(pd.DataFrame({'x_column': 'xxx', 'y_column': 'yyy', 'number_column': num}, index=[0]), ignore_index=True) 

我的問題是,如果有這樣的一個更快的方法?目前的做法需要很長時間才能完成。

回答

2

請勿在循環中調用data_df = data_df.append(...),因爲這會導致quadratic copying,這對性能非常不利。而是附加到列表中,構建一個DataFrame,然後將其連接到原始DataFrame上:

tmp = pd.DataFrame({'x_column': 'xxx', 'y_column': 'yyy', 'number_column': number_list}) 
data_df = pd.concat([data_df, tmp])