我已将Excel导入数据框。看起来像这样:
然后,我使用代码按照“ tx_id”对这些数据进行分组,并创建单独的csv(名称为tx_id),这样我便得到了这样的数据(3e6737ae-c3af-4d19-a645-d17fc73dbb7c.csv)。这是代码:
for i, g in dframe.groupby('tx_id'):
g.to_csv('{}.csv'.format(i.split('/')[0]), index=False)
然后我创建了一个仅包含tx_id的单独dframe,然后使用以下代码删除了重复项:
dframe1 = dframe1.drop_duplicates()
现在我的数据框如下所示:
我已将此数据帧转换为csv。现在,我想将csv文件的名称(即tx_id值)与新创建的csv中存在的数据进行比较,如果名称匹配,我想将csv文件(即tx_id值)读入数据框。我以前是手动导入这些csv文件的,但是我有一个很大的数据集,因此每次读取数据并对其进行进一步处理都是不可行的。现在我正在做的是将csv文件分别导入到数据框中。我正在使用此代码:
df = pd.read_csv(' ae229a81-bb33-4cf1-ba2f-360fffb0d94b.csv')
这给了我这样的结果:
然后我曾经使用以下代码来拆开它并应用value_counts:
df1 = df.groupby('rule_id')['request_id'].value_counts().unstack().fillna(0)
最终的结果看起来像这样:
我想使此过程自动化,但我不知道如何做。你们可以帮我吗?
答案 0 :(得分:1)
您可以迭代<?php
include('***Contains private stuff***.php');
if($_POST) {
$to = "***PRIVATE MAIL***"; // Your email here
$subject = 'Message from my website'; // Subject message here
}
//Send mail function
function send_mail($to,$subject,$message,$headers){
return @mail($to,$subject,$message,$headers);
}
//MySQL
$query = "INSERT INTO contact (name, email, subject, message) VALUES ('$name', '$email', '$subject', '$message')";
$result = mysqli_query($connection, $query);
//Sanitize input data, remove all illegal characters
$name = filter_var($_POST['name'], FILTER_SANITIZE_STRING);
$email = filter_var($_POST['mail'], FILTER_SANITIZE_EMAIL);
$subject = filter_var($_POST['subject'], FILTER_SANITIZE_STRING);
$message = filter_var($_POST['message'], FILTER_SANITIZE_STRING);
//Send Mail
$headers = 'From: ' . $email .''. "\r\n".
'Reply-To: '.$email.'' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
$sent = send_mail($to, $subject, $message . "\r\n\n" .'Name: '.$name. "\r\n" .'Email: '.$email, $headers);
if (! $sent) {
// log the error
error_log('Mail Error: Message to ' . $to . ' wasn\'t sent');
}
?>
并将数据帧附加到tx_id
:
list
这仅在与csv文件位于同一目录中执行时才有效。否则:
import pandas as pd
dfs = []
for tx in dframe1['tx_id']:
dfs.append(pd.read_csv('%s.csv' % tx))
已编辑
要应用某些功能,而不是直接附加数据框:
import os
import pandas
dfs = []
for tx in dframe1['tx_id']:
dfs.append(pd.read_csv(os.path.join('/path/to/csv/', '%s.csv' % tx)))
现在您的for tx in dframe1['tx_id']:
df = pd.read_csv(os.path.join('/path/to/csv/', '%s.csv' % tx))
dfs.append(df.groupby('rule_id')['request_id'].value_counts().unstack().fillna(0))
拥有所有dfs
的搜索结果。您可以使用索引来引用它们。
如果要使用文件名查找它们,请使用value_counts()
:
dict