python - Pandas .apply() 子函数正在更改主数据框

标签 python group-by pandas data-mining

Pandas/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

最佳答案

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 是一个 DataFrame。
  2. 现在,x 被重新分配给 x_arr 中的值。
  3. 返回的值为x的当前值,即最后一个 x_arr 中的值,而不是原始 DataFrame。

关于python - Pandas .apply() 子函数正在更改主数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21815373/

相关文章:

mysql - 按月在表中显示结果

group-by - hive 表达式不在分组中

python - 需要更快的 map 功能

python - 按列分组并获取 Pandas 组的平均值

python - 为什么 django.contrib.auth.authenticate() 在这里不起作用?

MySQL 查询 GROUP BY 日/月/年

python - Soup-ify 获取请求

python - JSON 文件到 Pandas df

python - 从第二个 DF 中快速(矢量化)查找属于相同大小的矩形(由两个点给出)的一个 DF 中的点

python - 通知 worker 关闭的 celery 任务