Python 如何按列名筛选值,然后将具有相同值的行提取到另一个CSV文件?蟒蛇/熊猫

Python 如何按列名筛选值,然后将具有相同值的行提取到另一个CSV文件?蟒蛇/熊猫,python,python-2.7,csv,pandas,Python,Python 2.7,Csv,Pandas,我有一个有4列的熊猫数据框,第一列是“ID号”。我试图过滤“ID号”,并将相同的值捆绑在一起。之后,我想将每个具有相同值的文件提取到一个不同的csv文件中,并使用其受尊重的名称 数据帧: ID Number col2 col3 DATE 0 111 0.5 -0.6 20160104 1 118 -0.1 -0.6 20160104 2 11D

我有一个有4列的熊猫数据框,第一列是“ID号”。我试图过滤“ID号”,并将相同的值捆绑在一起。之后,我想将每个具有相同值的文件提取到一个不同的csv文件中,并使用其受尊重的名称

数据帧:

     ID Number    col2           col3     DATE
0   111            0.5          -0.6    20160104
1   118           -0.1          -0.6    20160104
2   11D            0.3          -1.1    20160104
3   111           -0.7          -0.9    20150102


 ***Output I need:***
 Number ID    col2           col3     DATE
0   111            0.5          -0.6    20160104
1   111           -0.7          -0.9    20150102

我试图做一些事情,但是我找不到任何关于如何过滤列,然后在线提取的内容。谢谢大家!

您可以将
duplicated
与param一起使用
keep=False
,这样它会为所有重复的行返回
True
,并屏蔽df:

In [16]:
df[df['ID Number'].duplicated(keep=False)]

Out[16]:
  ID Number  col2  col3      DATE
0       111   0.5  -0.6  20160104
3       111  -0.7  -0.9  20150102
对于第二部分,您可以执行以下操作:

gp = df[df['ID Number'].duplicated(keep=False)].groupby('ID Number')
gp.apply(lambda x: x.to_csv(str(x.name) + '.csv')
编辑

实际上,如果您只是想将具有相同ID号的所有行写入命名的csv,那么:

df.groupby('ID Number').apply(lambda x: x.to_csv(str(x.name) + '.csv'))

应该做你想做的事

你可以将
duplicated
与param一起使用
keep=False
,这样它会为所有重复的行返回
True
,并屏蔽df:

In [16]:
df[df['ID Number'].duplicated(keep=False)]

Out[16]:
  ID Number  col2  col3      DATE
0       111   0.5  -0.6  20160104
3       111  -0.7  -0.9  20150102
对于第二部分,您可以执行以下操作:

gp = df[df['ID Number'].duplicated(keep=False)].groupby('ID Number')
gp.apply(lambda x: x.to_csv(str(x.name) + '.csv')
编辑

实际上,如果您只是想将具有相同ID号的所有行写入命名的csv,那么:

df.groupby('ID Number').apply(lambda x: x.to_csv(str(x.name) + '.csv'))

应该做你想做的事

实际上,你只是想将每个唯一的ID号写入一个新的csv吗?如果是这样的话,那么
df.groupby('ID Number').apply(lambda x:x.to_csv(str(x.name)+'.csv')
应该有效。实际上,您只是想将每个唯一的ID号写入一个新的csv吗?如果是这样的话
df.groupby('ID Number').apply(lambda x:x.to_csv(str(x.name)+'.csv'))
应该适用于编辑后的第二部分,我在哪里可以指定保存这些文件的输出路径?很抱歉,您想要的是类似
df.groupby('ID Number')。apply(lambda x:x.to_csv(r'c:\output\'+str(x.name)+'.csv'))
或者您可以定义一个输出路径变量
path='c:/my_output_folder/',然后执行
df.groupby('ID Number')。应用(lambda x:x.to_csv(path+str(x.name)+'.csv'))`是的,您提供的代码工作得很好!感谢您的帮助!对于编辑后的第二部分,我在哪里可以指定保存这些文件的输出路径?很抱歉,您需要的是类似
df.groupby('ID Number')。apply(lambda x:x.to_csv(r'c:\output\'+str(x.name)+'.csv'))
或者您可以定义一个输出路径变量
path='c:/my_output_folder/',然后执行
df.groupby('ID Number')。apply(lambda x:x.to_csv(path+str(x.name)+'.csv')`是的,您提供的代码工作得很好!感谢您的帮助!