2014-02-16 17 views
1

熊猫/ Python用户,大熊猫。适用()子功能改变主要数据框

我试图分析X和Y坐标数据,但组。 由于某些原因,当我将一列中的值拉到一个序列中以逐一分析它们,然后尝试返回完整的数据帧时,某些列会丢失。 我不确定为什么我的主要数据框被修改时,我没有做任何修改。

代码:

import pandas as pd 
import numpy as np 


def eventDetector(x): 
    x_arr = pd.Series(x['X_COOR'].values.copy()) 
    y_arr = pd.Series(x['Y_COOR'].values.copy()) 
    print('For x returned: %s for y: %s' % (x_arr.values, y_arr.values)) 
    for x, y in zip(x_arr, y_arr): 
     1+1 
     print('Here are the x: %s and y: %s' % (x, y)) 
    return x 


prev_x = 0 
prev_y = 0 

df = pd.read_csv('/users/aleksarias/desktop/SubS.csv') 
df.sort(['WA', 'MRG', 'DATETIME'], inplace=True) 
dfg = df.groupby(['WA', 'MRG']) 
print(dfg.head(1)) 
dfa = dfg.apply(eventDetector) 
print(dfa.head()) 

输入:

   WA LEV  DATETIME MRG X_COOR Y_COOR 
WA MRG                
4 10_10 714 4 6317C 11/8/13 17:24 10_10 -25901000 -33021000 
    10_12 716 4 9295T 11/25/13 10:46 10_12 -27604000 -21857000 
    10_13 720 4 2965S 10/14/13 1:56 10_13 -27887187 -12670910 
    10_14 722 4 6025P 11/4/13 9:26 10_14 -25534000 -7426000 
    10_15 726 4 6817C 11/13/13 10:09 10_15 -30274000 -397000 
    10_16 730 4 6025P 11/4/13 9:26 10_16 -25265000 4181000 
    10_17 733 4 4865S 10/27/13 15:56 10_17 -28157000 10448000 
    10_18 735 4 4975C 10/29/13 5:22 10_18 -28182842 10506772 
    10_19 736 4 5906C 11/3/13 11:36 10_19 -26065098 19681040 
    10_21 738 4 6025P 11/4/13 9:26 10_21 -25388000 34586000 
    10_23 742 4 4865S 10/27/13 15:56 10_23 -27075000 42340000 
    10_24 746 4 4975C 10/29/13 5:22 10_24 -27812334 44613674 
    10_25 748 4 4865S 10/27/13 15:56 10_25 -25996000 53117000 

输出(印刷(dfa.head())):

WA MRG 
4 10_10 -25901000 
    10_12 -27604000 
    10_13 -29411000 
    10_14 -25423000 
    10_15 -25740000 
dtype: int64 

回答

1
def eventDetector(x):         # 1 
    x_arr = pd.Series(x['X_COOR'].values.copy()) 
    y_arr = pd.Series(x['Y_COOR'].values.copy()) 
    print('For x returned: %s for y: %s' % (x_arr.values, y_arr.values)) 
    for x, y in zip(x_arr, y_arr):      # 2 
     1+1 
     print('Here are the x: %s and y: %s' % (x, y)) 
    return x            # 3 
  1. 这里,x是一个 数据帧。
  2. 现在,x被重新分配为x_arr中的值。
  3. 返回的值是当前值x,这是x_arr中的最后一个 值,而不是原始DataFrame。
+0

WOW!我不能相信我错过了这一点。谢谢!!!! –