我有多个 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()