假設我有 file1.csv:
OU Mailfile
CORP:Jenny Smith: mail/246802.nsf
"CORP:John Smith:,John Smith:" mail/123456.nsf
STORE:Mary Poppins: mail/789012.nsf
STORE:Tony Stark: mail/345678.nsf
STORE:Carmen Sandiego: mail/901234.nsf
NEWS:Peter Parker: mail/567890.nsf
NEWS:Clark Kent: mail/654321.nsf
STORES:store123 mail/369121.nsf
然后file2.csv:
OU
CORP
STORE
NEWS
對于 file2.csv 中包含“CORP”、“STORE”或“NEWS”的每一行,我想搜索 file1.csv 并創建一個檔案,例如 STOREall.csv、CORPall.csv 和 NEWSall.csv。
所以像 STOREall.csv 這樣的檔案應該有:
OU Mailfile
STORE:Mary Poppins: mail/789012.nsf
STORE:Tony Stark: mail/345678.nsf
STORE:Carmen Sandiego: mail/901234.nsf
STORES:store123 mail/369121.nsf
CORPall.csv:
OU Mailfile
CORP:Jenny Smith: mail/246802.nsf
CORP:John Smith:,John Smith: mail/123456.nsf
然后 NEWSall.csv
OU Mailfile
NEWS:Peter Parker: mail/567890.nsf
NEWS:Clark Kent: mail/654321.nsf
如果我也可以只使用 OU 列而不是 Mailfile 列,那也很好。但我想我可以為此做一個 usecols=['OU'] 。
uj5u.com熱心網友回復:
您可以將這兩個檔案讀入資料框,遍歷 file2.csv 的“OU”列中的值,從 file1.csv 過濾資料并保存為單獨的 CSV 檔案。
import pandas as pd
data = pd.read_csv('file1.csv')
depts = pd.read_csv('file2.csv')
for dept in depts['OU']:
df_dept = data[data['OU'].str.contains(dept)]
df_dept['OU'].to_csv(f'{dept}all.csv', index=False)
uj5u.com熱心網友回復:
您可以遍歷名稱file2并用于str.startswith識別正確的行:
file1 = pd.read_csv('file1.csv')
file2 = pd.read_csv('file2.csv')
for i in file2['OU']:
file1[file1['OU'].str.startswith(i)].to_csv(f'{i}all.csv', index=False)
然后:
for i in file2['OU']:
print(f'{i}:\n', pd.read_csv(f'{i}all.csv'), end='\n\n')
印刷
CORP:
OU Mailfile
0 CORP:Jenny Smith: mail/246802.nsf
1 CORP:John Smith:,John Smith: mail/123456.nsf
STORE:
OU Mailfile
0 STORE:Mary Poppins: mail/789012.nsf
1 STORE:Tony Stark: mail/345678.nsf
2 STORE:Carmen Sandiego: mail/901234.nsf
3 STORES:store123 mail/369121.nsf
NEWS:
OU Mailfile
0 NEWS:Peter Parker: mail/567890.nsf
1 NEWS:Clark Kent: mail/654321.nsf
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/423433.html
標籤:
