使用pandas read_csv()
函数,我按如下方式读取iso-8859-1
文件:
df = pd.read_csv('path/file', \
sep = '|',names =['A','B'], encoding='iso-8859-1')
然后,我想使用MLLib的word2vect。但是,它只接受RDDs作为参数。所以我尝试将pandas数据帧转换为RDD,如下所示:
from pyspark.sql import SQLContext
spDF = sqlContext.createDataFrame(df['A'])
spDF.show()
无论如何,我得到以下例外:
TypeError: Can not infer schema for type: <type 'unicode'>
我去了Pyspark's documentation以查看是否有类似编码参数的内容,但我没有找到任何内容。想知道如何将特定的pandas数据帧列转换为Pyspark RDD吗?
更新
从@zeros回答这是我尝试将columnn保存为数据帧,如下所示:
new_dataframe = df_3.loc[:,'A']
new_dataframe.head()
然后:
from pyspark.sql import SQLContext
spDF = sqlContext.createDataFrame(new_dataframe)
spDF.show()
我得到了同样的例外:
TypeError: Can not infer schema for type: <type 'unicode'>
答案 0 :(得分:2)
使用时df['A']
不是pandas.DataFrame
而是pandas.Series
因此当您将其传递给SqlContext.createDataFrame
时,它会被视为任何其他Iterable
而PySpark不会#39;支持将简单类型转换为DataFrame
。
如果您想将数据保留为Pandas DataFrame
,请使用loc
方法:
df.loc[:,'A']
答案 1 :(得分:0)
从@ zeros323回答我注意到它实际上不是熊猫数据帧。我consulted pandas documentation发现function lgbk_add_member( $order_id ) {
$order = new WC_Order( $order_id );
$items = $order->get_items();
foreach ( $items as $item ) {
$product_name = $item['name'];
$product_id = $item['product_id'];
$product_variation_id = $item['variation_id'];
if ( $order->user_id > 0 && $product_id == '7' ) {
update_user_meta( $order->user_id, 'paying_customer', 1 );
$user = new WP_User( $order->user_id );
// Remove role
$user->remove_role( 'expired' );
// Add role
$user->add_role( 'customer' );
}
}
}
add_action( 'woocommerce_order_status_completed', 'lgbk_add_member' );
可以转换pandas数据帧中的特定列。所以我做了以下事情:
to_frame()