附加两个或多个数据集时如何添加数据集标识符(如 id 列)?



我有多个 csv 格式的数据集,我想通过追加来导入。每个数据集具有相同的列名称(字段(,但值和长度不同。

例如:

df1
date name surname age address
...
df2
date name surname age address
...

我想要拥有

df=df1+df2
date name surname age address dataset
(df1)                                  1
...                                  1
(df2)                                  2
...                                  2

即我想添加一个新列,作为数据集的标识符(字段来自哪里,如果来自数据集 1 或数据集 2(。

我该怎么做?

这是你要找的吗?

注意:示例的列比您的列少,但方法相同。

import pandas as pd
df1 = pd.DataFrame({
'name': [f'Name{i}' for i in range(5)],
'age': range(10, 15)
})
df2 = pd.DataFrame({
'name': [f'Name{i}' for i in range(20, 22)],
'age': range(20, 22)
})
combined = pd.concat([df1, df2])
combined['dataset'] = [1] * len(df1) + [2] * len(df2)
print(combined)

输出

name  age  dataset
0   Name0   10        1
1   Name1   11        1
2   Name2   12        1
3   Name3   13        1
4   Name4   14        1
0  Name20   20        2
1  Name21   21        2

我们在concat中有key

combined = pd.concat([df1, df2],keys=[1,2]).reset_index(level=1)

在带有scala 的 Spark 中,我会做这样的事情:

import org.apache.spark.sql.functions._

val df1 = sparkSession.read
.option("inferSchema", "true")
.json("/home/shredder/Desktop/data1.json")
val df2 = sparkSession.read
.option("inferSchema", "true")
.json("/home/shredder/Desktop/data2.json")
val df1New = df1.withColumn("dataset",lit(1))
val df2New = df2.withColumn("dataset",lit(2))
val df3 = df1New.union(df2New)
df3.show()

最新更新