我是php的新手,我想用php处理两个不同的csv文件。
这是我的两个csv文件的屏幕截图: https://www.noelshack.com/2019-25-4-1561015547-csv1.png https://www.noelshack.com/2019-25-4-1561015547-csv2.png
在我的两个csv中,我具有相似的ID和不同的价格(“ Prix HT”列)。
我想做的是检查相似的ID,并使用价格进行操作。
例如,对于ID为96885的CSV1,我的价格为40。 对于同一个ID,在CSV2中,我有两个价格:45和48。
我在php中想要的是一种创建另一列的方法,该列可以根据csv1文件计算csv2文件的价格差异。 在上面的示例中,代码应为5和8。
我打算在海量CSV文件中执行此类操作。
我只想出如何使用fgetcsv函数使用php使csv文件出现在数组中,但我不知道下一步该怎么做。
这是我到目前为止的代码,不是很多,因为我不知道下一步该怎么做:
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>TITLE</title>
<link rel="stylesheet" type="text/css" href="css/styles.css">
</head>
<body>
<?php
set_time_limit (0);
$testcsv = fopen('test.csv', 'a+');
$testcsv2 = fopen("test2.csv", "a+");
$fichierFinal = fopen('final.csv', 'w');
while($row=fgetcsv($testcsv, 99999,';')){
$ID_product = $row[0];
$price_product = $row[3];
while($row1=fgetcsv($testcsv2, 99999,';')){
$ID_combination = $row1[0];
$price_combination = intval($row1[3]);
if($ID_product == $ID_combination ){
$fprice = $price_combination - $price_product;
$row1[3]=$fprice;
}
fputcsv($fichierFinal, $row1, ";");
};
}
?>
</body>
</html>
答案 0 :(得分:0)
我尝试了脚本。请注意,我使用两个CSV文件,每个文件只有一列:
< val rawDataTest = sc.textFile("/home/hduser1/Pictures/LogTextTest.txt")
val header1 = rawDataTest.first()
val rawDataTest1 = rawDataTest.filter(line => line != header1)
val records1 = rawDataTest1.map(line => line.split(","))
records1.first()
case class StumbleUpon1(id: String, text: String)
val data1 = records1.map{ r1 =>
val trimmed1 = r1.map(_.replaceAll("\"", ""))
//val label1 = trimmed(r1.size - 1).toInt
val features = trimmed1.slice(0, r1.size)
assert(features.size == 2)
StumbleUpon1(features(0), features(1))
}
data1.first()
val Test = data1.toDF("id", "text")
Test.show(15)
val predictions = model.transform(Test)
predictions.show(5) >
让我知道。