我有两个pandas数据帧
df1 = DataFrame([[0,123,321],[0,1543,432]], columns=['A', 'B','C'])
df2 = DataFrame([[1,124],[1,1544]], columns=['A', 'C'])
Run Code Online (Sandbox Code Playgroud)
我想合并这些,以便新的数据框如下所示
A | B | C
0 123 321
0 1543 432
1 null 124
1 null 1544
Run Code Online (Sandbox Code Playgroud)
我尝试过使用append和concat,但似乎没有任何效果.任何帮助将非常感激.
我有一个熊猫数据框。我尝试将包含字符串值的两列首先连接到列表中,然后使用zip将列表中的每个元素都用'_'连接。我的数据集如下:
df['column_1']: 'abc, def, ghi'
df['column_2']: '1.0, 2.0, 3.0'
Run Code Online (Sandbox Code Playgroud)
我想将这两列连接到第三列,如下所示,用于数据框的每一行。
df['column_3']: [abc_1.0, def_2.0, ghi_3.0]
Run Code Online (Sandbox Code Playgroud)
我已经使用下面的代码在python中成功完成了此操作,但该数据框非常大,并且需要花费很长时间才能为整个数据框运行它。我想在PySpark中做同样的事情以提高效率。我已经成功读取了spark数据框中的数据,但是我很难确定如何使用PySpark等效函数复制Pandas函数。如何在PySpark中获得想要的结果?
df['column_3'] = df['column_2']
for index, row in df.iterrows():
while index < 3:
if isinstance(row['column_1'], str):
row['column_1'] = list(row['column_1'].split(','))
row['column_2'] = list(row['column_2'].split(','))
row['column_3'] = ['_'.join(map(str, i)) for i in zip(list(row['column_1']), list(row['column_2']))]
Run Code Online (Sandbox Code Playgroud)
我已使用以下代码将两列转换为PySpark中的数组
from pyspark.sql.types import ArrayType, IntegerType, StringType
from pyspark.sql.functions import col, split
crash.withColumn("column_1",
split(col("column_1"), ",\s*").cast(ArrayType(StringType())).alias("column_1")
)
crash.withColumn("column_2",
split(col("column_2"), ",\s*").cast(ArrayType(StringType())).alias("column_2")
)
Run Code Online (Sandbox Code Playgroud)
现在,我需要使用'_'在两列中压缩数组的每个元素。我该如何使用zip?任何帮助表示赞赏。