因此,我有两个要合并在一起的数据框。
我正在合并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)
有什么帮助吗?
我需要知道每个表列的一些值,并希望能够在一个查询中执行此操作.
让我们假设我们有一个包含列的表: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)
无论如何,只需一次通话即可获得此功能.
另外,我想获得最常见值的频率:
2, 2, 4
Run Code Online (Sandbox Code Playgroud)
在相同或另一个查询中.
我不想为每一列做单独的查询,因为理论上可能有很多列.
有没有一种有效的方法来做到这一点?
我正在使用 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 ×2
apache-spark ×1
dataframe ×1
hivecontext ×1
hql ×1
join ×1
merge ×1
pandas ×1
postgresql ×1
pyspark ×1
python ×1