np.select 在两个不同文件的两列中写入唯一值行



我是python的新手,仍在尝试学习这些工具。我认为熊猫和numpy将是这项任务的最佳选择,但也许不是最简单的:

我想读取两个单独的.csv文件,并根据两个条件将每个文件中的行写入一个新文件:

  1. 第 2 列 (POS( 中的值不匹配 - 将每个行中的行写入新文件
  2. 第 2 列 (POS( 中的值在
  3. 两个文件中匹配,但第 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')

最新更新