如何解决Pyspark数据框内部联接第二次不起作用
我试图将一个表与自身连接几次,以获取其所有连接的cnt: 原始表格:
cust_id node_1 node_2 cnt
----------------------------------
1 5 6 12
5 10 9 3
6 7 10 4
我想要的桌子:
cust_id cnt cnt_node_1 cnt_node_2
-----------------------------------------
1 12 3 4
(请注意,cnt_node_1是cust_id 5的cnt值,它是3,与cnt_node_2相同)
我能够加入为第一个节点产生结果
cust_id cnt cnt_node_1
----------------------------
1 12 3
使用代码:
df1 = table.alias('df1')
df2 = table.select("cust_id","cnt").withColumnRenamed("cust_id","cust_id_1").withColumnRenamed("cnt","cnt_1").alias('df2')
df1 = df1.join(df2,on = df1.node_1 == df2.cust_id_1,how = "inner")
然后我要尝试使用完全相同的代码对节点2做相同的事情
df2 = table.select("cust_id","cust_id_2").withColumnRenamed("cnt","cnt_2").alias('df2')
df1 = df1.join(df2,on = df1.node_2 == df2.cust_id_2,how = "inner")
但是我到处都是NULL:
cust_id cnt cnt_node_1 cnt_node_2
-----------------------------------------
1 12 3 NULL
有人可以给我提示为什么此内部联接第二次不起作用吗?预先感谢!
解决方法
尝试简单。
bot.on('message',message =>{
if(message.content.startsWith(`${prefix}ban`)){
const args = message.content.trim().split(/ +/g);
const bUser = message.guild.member(message.mentions.users.first())
if(!message.guild.member(message.author).hasPermission("ADMINISTRATOR")) {return message.reply("You do not have enough permission for this command!")};
if(!message.guild.member(bot.user).hasPermission("ADMINISTRATOR")) {return message.reply("The bot does not have enough permissions for this commands")};
if(message.mentions.users.size === 0) {return message.reply("You need to ping a user!")};
if (!message.guild) return;
let banReason = args.join(" ").slice(27);
const banembed = {
color: "RANDOM",title: `Ban`,description: `${bUser} has been banned by ${message.author}`,fields: [{
name: "Ban Reason",value: `${banReason}`,}],}
bUser.send({ embed: banembed }).
then(
bUser.ban({ reason: banReason })
(message.channel.send({ embed: banembed })
)
)
};
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。