小编fir*_*eak的帖子

相当于SQL non-equi JOIN的Pandas

因此,我有两个要合并在一起的数据框。

我正在合并3列,其中2个是简单的联接。

joined_df = pd.merge(df1, df2, how='left', on=['name', 'city'])
Run Code Online (Sandbox Code Playgroud)

我希望这是使用第三列,但这将是一个比较,如下所示:

joined_df = pd.merge(df1, df2, how='left',
on=['name', 'city', 'df1.year' >= 'df2.year_min'])
Run Code Online (Sandbox Code Playgroud)

不知道正确的语法在这里。

如果是SQL,对我来说将很容易。

SELECT * FROM df1
JOIN df2 on (df1.name = df2.name and df1.year = df2.year and df1.year > df2.year_min)
Run Code Online (Sandbox Code Playgroud)

有什么帮助吗?

python merge join dataframe pandas

5
推荐指数
1
解决办法
529
查看次数

在PostgreSQL表中查找数据的统计信息.每列的唯一计数和最高频率

我需要知道每个表列的一些值,并希望能够在一个查询中执行此操作.

让我们假设我们有一个包含列的表:A,B,C.

A     B      C
--------------------
Red   Red    Red
Red   Blue   Red
Blue  Green  Red
Blue  Green  Red
Run Code Online (Sandbox Code Playgroud)

我想要一个输出,说明A,B和C有多少个唯一值作为单独的列.所以,它会给出

2, 3, 1
Run Code Online (Sandbox Code Playgroud)
  • A(红色和蓝色)的2个唯一值
  • B的3个独特值(红色,蓝色和绿色)
  • 1个独特的C值(红色)

无论如何,只需一次通话即可获得此功能.

另外,我想获得最常见值的频率:

2, 2, 4
Run Code Online (Sandbox Code Playgroud)
  • 2因为有2个红色(或蓝色,相同的值),
  • 2因为有2个绿色,
  • 4因为有4个红色

在相同或另一个查询中.

我不想为每一列做单独的查询,因为理论上可能有很多列.

有没有一种有效的方法来做到这一点?

sql postgresql

2
推荐指数
1
解决办法
32
查看次数

SparkJob 文件名

我正在使用 HQL 查询,其中包含类似于...

INSERT OVERWRITE TABLE ex_tb.ex_orc_tb
select *, SUBSTR(INPUT__FILE__NAME,60,4), CONCAT_WS('-', SUBSTR(INPUT__FILE__NAME,71,4), SUBSTR(INPUT__FILE__NAME,75,2), SUBSTR(INPUT__FILE__NAME,77,2))
 from ex_db.ex_ext_tb
Run Code Online (Sandbox Code Playgroud)

当我进入 hive 并使用该命令时,它工作正常。

当我把它放入一个 pyspark, hivecontext 命令时,我得到了错误......

pyspark.sql.utils.AnalysisException: u"cannot resolve 'INPUT__FILE__NAME' given input columns: [list_name, name, day, link_params, id, template]; line 2 pos 17"
Run Code Online (Sandbox Code Playgroud)

任何想法为什么会这样?

sql hql apache-spark pyspark hivecontext

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

标签 统计

sql ×2

apache-spark ×1

dataframe ×1

hivecontext ×1

hql ×1

join ×1

merge ×1

pandas ×1

postgresql ×1

pyspark ×1

python ×1