我是python的新手,仍在尝试学习这些工具。我认为熊猫和numpy将是这项任务的最佳选择,但也许不是最简单的:
我想读取两个单独的.csv文件,并根据两个条件将每个文件中的行写入一个新文件:
- 第 2 列 (POS( 中的值不匹配 - 将每个行中的行写入新文件 第 2 列 (POS( 中的值在
- 两个文件中匹配,但第 13 列 (GT( 中的值不会将每个行写入单独的新文件中
我试图拼凑np.select
的条件和选择,但我对将每个文件读入内存然后指定从哪个文件匹配哪一列,最后如何编写新文件作为选择所需的语法很糟糕......
任何帮助将不胜感激;谢谢!
您可以使用 read_csv 函数使用 Pandas 读取 csv 文件。他们也是写入csv文件的另一个功能
您可以使用数据帧来保存要放入"新文件"的信息,然后将其写入 csv。
但我仍然建议你看看Pandas中的数据操作和比较,它会让你走上一个很好的轨道,学习如何与数据帧进行交互。10分钟的熊猫指南可以很好地开始学习。
让我们依次讨论每个问题。首先将 CSV 文件读取到 Pandas 数据帧对象:
df1 = pd.read_csv('file1.csv')
df2 = pd.read_csv('file2.csv')
以下解决方案假定 POS 值在文件中不重复。
1.第 2 列 (POS( 中的值不匹配 - 将每个行写入新文件
# get intersection of POS columns
values = set(df1['POS']) & set(df2['POS'])
# filter & concatenate
res = pd.concat([df1[df1['POS'].isin(values)], df2[df2['POS'].isin(values)])
# export to csv
res.to_csv('out1.csv')
2.第 2 列 (POS( 中的值在两个文件中匹配,但第 13 列 (GT( 中的值不会将每个文件中的行写入单独的新文件中
# get intersection of POS column
values = set(df1['POS']) & set(df2['POS'])
# filter & concatenate
res = pd.concat([df1[df1['POS'].isin(values)], df2[df2['POS'].isin(values)])
# drop rows where POS and GT are the same
res = res.drop_duplicates(subset=['POS', 'GT'])
# export to csv
res.to_csv('out2.csv')