我有这个:
df_e :=
|country, name, year, c2, c3, c4|
|Austria, Jon Doe, 2003, 21.234, 54.234, 345.434|
...
df_p :=
|name, 2001, 2002, 2003, 2004|
|Jon Doe, 2849234, 12384312, 123908234, 12398193|
...
两个pysparkDataframe都从csv文件读取。
如何在dfu e中创建一个名为“amount”的新列,从dfu e中引用每个记录的名称和年份值,并从dfu p中获取相应的金额?使用Pypark。
在这种情况下,我应该得到以下dataframe:
df_e :=
|country, name, year, c2, c3, c4, amount|
|Austria, Jon Doe, 2003, 21.234, 54.234, 345.434, 123908234|
...
谢谢你的帮助!
编辑:
我就是这样读文件的:
from pyspark import SparkContext, SparkConf
from pyspark.sql import SparkSession
sc = SparkContext.getOrCreate(SparkConf().setMaster('local[*]'))
spark = SparkSession.builder.getOrCreate()
df_e = spark.read.option('header', 'true').option('inferSchema', 'true').csv('data/e.csv')
df_p = spark.read.option('header', 'true').option('inferSchema', 'true').csv('data/p.csv')
我是从pyspark开始的,所以我不知道我能用什么函数来解决这个问题。
对于pandas,我将通过遍历dataframe来实现,如下所示:
for i in df_e.index:
p[i] = df_p.query('name == "{}"'.format(df_e['name'][i]))['{}'.format(df_e['year'][i])]
然后将列表p作为一个新的列添加到dfu e中(尽管我知道可能有更好的方法)。
1条答案
按热度按时间flseospp1#