小编jov*_*cbg的帖子

PostgreSQL中的不同行中有两列条件

我有一个大约有100列和30000行的表.看起来像这样:

site_id   cell_id   sector_id    value1     value2
  1          1           1          70        23
  1          2           1          40        20
  1          3           1          67        35
  1          5           2          42        60
  1          6           2          65        30
  1          7           2          62        62
  2          11          1          67        11
  2          12          1          45        22
  2          13          1          65        15
Run Code Online (Sandbox Code Playgroud)

对于一个site_id的相同sector_id,如果value1> = 65,那么value2 <25的相同扇区中的任何cell_id将被归类为"LOW_LOAD_CELL".期望的输出将是:

site_id   cell_id   sector_id    value1     value2   cell_status
  1          1           1          70        23     LOW_LOAD_CELL
  1          2           1          40        20     LOW_LOAD_CELL
  1          3           1          67        35
  1          5 …
Run Code Online (Sandbox Code Playgroud)

sql postgresql

10
推荐指数
2
解决办法
234
查看次数

在Python中查找所有后代的点数

我需要得到所有后代用side_a - side_b(在一个数据帧中)表示的链接,直到达到每个side_a他们的end_point(在其他数据帧中).所以:

df1:
side_a   side_b
  a        b
  b        c
  c        d
  k        l
  l        m
  l        n
  p        q
  q        r
  r        s

df2:
side_a    end_point
  a          c
  b          c
  c          c
  k          m
  k          n
  l          m
  l          n
  p          s
  q          s
  r          s
Run Code Online (Sandbox Code Playgroud)

关键是获取每个side_a值的所有点,直到从df2到达该值的end_point.如果它有两个end_point值(如"k"那样),它应该是两个列表.

我有一些代码,但它不是用这种方法编写的,它会从df1中删除所有行,如果df1['side_a'] == df2['end_points']这会导致某些问题.但是,如果有人要我发布代码,我当然会.

期望的输出将是这样的:

side_a    end_point
  a          [b, c]
  b          [c]
  c          [c]
  k          [l, m]
  k          [l, n]
  l          [m]
  l          [n]
  p          [q, r, s]
  q          [r, s] …
Run Code Online (Sandbox Code Playgroud)

python tree recursion descendant pandas

9
推荐指数
1
解决办法
564
查看次数

最近24小时将文件从HDFS中的多个目录复制到本地

从HDFS到本地获取数据时遇到问题。我有例如:

/path/to/folder/report1/report1_2019_03_24-03_10*.csv
/path/to/folder/report1/report1_2019_03_24-04_12*.csv
...
/path/to/folder/report1/report1_2019_03_25-05_12*.csv
/path/to/folder/report1/report1_2019_03_25-06_12*.csv
/path/to/folder/report1/report1_2019_03_25-07_11*.csv
/path/to/folder/report1/report1_2019_03_25-08_13*.csv
/path/to/folder/report2/report2_out_2019_03_25-05_12*.csv
/path/to/folder/report2/report2_out_2019_03_25-06_11*.csv
/path/to/folder/report3/report3_TH_2019_03_25-05_12*.csv
Run Code Online (Sandbox Code Playgroud)

因此,我需要输入每个文件夹(report1,report2,report3 ...,但并非所有文件夹都以“ report”开头),然后输入从先前24小时复制到本地的CSV文件,并且应该每天早晨4点完成是(我可以使用crontab安排它)。问题是我不知道如何遍历文件并将时间戳记作为参数传递。

我已经尝试过类似的东西(在Stack Overflow上找到)

/datalake/hadoop/bin/hadoop fs -ls /path/to/folder/report1/report1/*    |   tr -s " "    |    cut -d' ' -f6-8    |     grep "^[0-9]"    |    awk 'BEGIN{ MIN=1440; LAST=60*MIN; "date +%s" | getline NOW } { cmd="date -d'\''"$1" "$2"'\'' +%s"; cmd | getline WHEN; DIFF=NOW-WHEN; if(NOW > DIFF){ print "Migrating: "$3; system("datalake/hadoop/bin/hadoop fs -copyToLocal /path/to/local_dir/"$3) }}'
Run Code Online (Sandbox Code Playgroud)

但这是复制比我早几天的文件,并且仅从一个目录(在本例中为report1)复制文件。

有什么方法可以使此操作更加灵活和正确。如果可以使用bash而不是Python来解决问题,那就太好了。任何建议都欢迎或链接到具有类似问题的良好答案。

另外,也不必处于某个循环中。我可以为每个报告使用分隔的代码行。

bash hadoop hdfs

9
推荐指数
1
解决办法
658
查看次数

将值替换为Pandas数据框中的最近邻居的值

我在获取pandas数据框中某些行的最近值并用这些行中的值填充另一列时遇到问题。

我有数据样本:

id   su_id  r_value  match_v

A      A1      0        1
A      A2      0        1
A      A3      70       2
A      A4      120      100
A      A5      250      3
A      A6      250      100
B      B1      0        1
B      B2      30       2
Run Code Online (Sandbox Code Playgroud)

关键是,无论哪里match_v等于100,我都需要将其替换为最接近原始行(其中等于)100的行中的值,而只是将组(按id分组)r_valuer_valuematch_v100

预期产量

id   su_id  r_value  match_v

A      A1      0        1
A      A2      0        1
A      A3      70       2
A      A4      120      2
A      A5      250      3
A      A6      250      3
B      B1 …
Run Code Online (Sandbox Code Playgroud)

python nearest-neighbor pandas

8
推荐指数
1
解决办法
522
查看次数

计算pandas中每行的一些值的列数

我有这样的数据帧,数据:

Site code    Col1  Col2  Col3
A5252        24    53     NaN
A5636        36    NaN    NaN
A4366        NaN   NaN    NaN
A7578        42    785    24
Run Code Online (Sandbox Code Playgroud)

我想要计算一些具有一定价值的列,但没有NaN.期望的输出:

 Site code   Col1  Col2  Col3  Count
    A5252     24    53     NaN    2
    A5636     36    NaN    NaN    1
    A4366     NaN   NaN    NaN    0
    A7578     42    785    24     3
Run Code Online (Sandbox Code Playgroud)

与此相反的东西:df = data.isnull().sum(axis = 1)

python dataframe pandas

7
推荐指数
1
解决办法
6189
查看次数

按一列分组,在pandas中查找另一列的和和最大值

我有这样的数据帧:

Name  id  col1  col2  col3  cl4 
PL    252  0     747   3     53  
PL2   252  1     24    2     35 
PL3   252  4     75    24    13 
AD    889  53    24    0     95 
AD2   889  23    2     0     13  
AD3   889  0     24    3     6  
BG    024  12    89    53    66 
BG1   024  43    16    13    0   
BG2   024  5     32    101   4   
Run Code Online (Sandbox Code Playgroud)

现在我需要按ID进行分组,并且对于列col1和col4找到每个id的总和并将其放入靠近父列的新列中(例如:col3(sum))但是对于col2和col3,找到最大值.期望的输出:

Name  id  col1 col1(sum) col2 col2(max) col3 col(max) col4 col4(sum)
PL    252  0       5      747    747     3     24 …
Run Code Online (Sandbox Code Playgroud)

python group-by dataframe pandas

6
推荐指数
4
解决办法
1万
查看次数

分组并找到组的总和但是将NaN作为NaN返回,而不是0

我有一个数据框,每个唯一的组有4行.所以我需要按列进行分组,使它们成为唯一的,并进行一些聚合,例如max,min,sum和average.但问题是我为某些组提供了所有NaN值(在某些列中)并返回0.是否有可能返回NaN?例如:df

       time            id     el    conn   column1  column2  column3
2018-02-11 14:00:00     1     a      12      8        5         NaN
2018-02-11 14:00:00     1     a      12      1        NaN       NaN
2018-02-11 14:00:00     1     a      12      3        7         NaN
2018-02-11 14:00:00     1     a      12      4        12        NaN
2018-02-11 14:00:00     2     a      5       NaN      5         5
2018-02-11 14:00:00     2     a      5       NaN      3         2
2018-02-11 14:00:00     2     a      5       NaN      NaN       6
2018-02-11 14:00:00     2     a      5       NaN      7         NaN
Run Code Online (Sandbox Code Playgroud)

因此,例如,我需要groupby('id','el','conn')并找到column1,column3和column2的和.(在实际情况下,我需要执行更多的列聚合).我尝试了几种方法:.sum(),. transnsform('sum'),但是对于具有所有NaN值的组,我返回零.

期望的输出:

    time               id    el     conn   column1 …
Run Code Online (Sandbox Code Playgroud)

python numpy nan dataframe pandas

6
推荐指数
1
解决办法
1717
查看次数

根据列值将值从一个数据帧映射到其他数据帧中的新列 - Pandas

我从另一个数据帧映射值时遇到问题.

这些是两个数据帧的样本:

DF1

product   class_1   class_2   class_3
141A        11        13         5     
53F4        12        11        18  
GS24        14        12        10   
Run Code Online (Sandbox Code Playgroud)

DF2

id    product_type_0  product_type_1 product_type_2  product_type_3 measure_0 measure_1 measure_2   measure_3
1         141A            GS24             NaN           NaN          1         3           NaN       NaN
2         53F4            NaN              NaN           NaN          1        NaN          NaN       NaN
3         53F4            141A             141A          NaN          2         2            1        NaN
4         141A            GS24             NaN           NaN          3         2           NaN       NaN
Run Code Online (Sandbox Code Playgroud)

我接下来要做的是:我需要添加一个名为"Max_Class_1","Max_Class_2","Max_Class_3"的新列,并且该值将从df1中获取.对于每个订单号(_1,_2,_3),请查看现有列(例如product_type_1)product_type_1,并从产品具有相同值的df1中获取一行.然后查看度量列(例如measure_1),如果值为1(原始数据中可能最多有四个不同的值),则名为"Max_Class_1"的新列将具有与该product_type的class_1相同的值,在本例中为11.

我认为这比我解释的要简单一些.

期望的输出

id    product_type_0  product_type_1 product_type_2  product_type_3  measure_0 measure_1 measure_2  measure_3  max_class_0  max_class_1  max_class_2 …
Run Code Online (Sandbox Code Playgroud)

python mapping dataframe pandas

6
推荐指数
1
解决办法
567
查看次数

使用正则表达式从 pandas 列中提取子字符串

我的列的值如下:

Col1

1/1/100 'BA1
1/1/102Packe
1/1/102 'to_
Run Code Online (Sandbox Code Playgroud)

并且需要仅提取 1/1/100(从第一行)依此类推(1/1/102...)

我在用:

df['col1'] = df['col1'].str.extract('(\d+)/(\d+)/(\d+)', expand=True)
Run Code Online (Sandbox Code Playgroud)

但我只得到1。

不知道为什么这不起作用,正则表达式有问题还是我需要某种映射?

python regex pandas

6
推荐指数
1
解决办法
1万
查看次数

在pandas python中按两列和第三个最大值分组

我有一个带有 PERIOD_START_TIME、ID、更多列和列 VALUE 的数据框。我需要的是按 PERIOD_START_TIME 和 ID 分组(因为按时间和 ID 有重复的行)并取列 VALUE 的最大值。df:

PERIOD_START_TIME     ID       VALUE
06.01.2017 02:00:00   55  ...   35
06.01.2017 02:00:00   55  ...   22
06.01.2017 03:00:00   55  ...   63
06.01.2017 03:00:00   55  ...   33
06.01.2017 04:00:00   55  ...   63
06.01.2017 04:00:00   55  ...   45
06.01.2017 02:00:00   65  ...   10
06.01.2017 02:00:00   65  ...   5
06.01.2017 03:00:00   65  ...   22
06.01.2017 03:00:00   65  ...   5
06.01.2017 04:00:00   65  ...   12
06.01.2017 04:00:00   65  ...   15
Run Code Online (Sandbox Code Playgroud)

期望的输出:

PERIOD_START_TIME     ID  ...  VALUE …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

4
推荐指数
1
解决办法
6526
查看次数