根据csv文件中另一列中的值提取列的值

问题描述 投票:1回答:2

这是我的档案:

 id;verbatim;score
0;1; je suis beau;1
1;2; je suis laid;0
2;3;je suis merveilleux;1
3;4;je suis repugne;0

我想提取“verbatim”列中所有句子为1且所有得分为0的句子,以便我有两个分开的文件:

print(verbatim, score = 1)
id;verbatim;score
1; je suis beau;1
3;je suis merveilleux;1

print(verbatim, score = 0)
id;verbatim;score
2; je suis laid;0
4;je suis repugne;0

我开始编写一些代码,但我并不认为它是在正确的道路上:

df = pd.read_csv("out.csv", na_values = ['no info', '.'], encoding='latin-    1', delimiter=';')    
m1 = df['verbatim'].eq(0)
m2 = df['critere'].eq(0)


SizePos = df[m1 & m2]
dSizeZero_PptPosf2 = df[m1 & ~m2]
SizeZero_PptZero = df[~m1]

print(SizePos)

当我在阅读文件后打印df.head()时,我有:

      id                                           Verbatim   ...    Scoreneg  Scoreneu
   0   1  Je nai pas bien compris si cétait destiné à ...   ...           6813     3202
   1   2  Peut-être quil faut que je révise mes classiq...   ...       20842     3974
   2   3  ça peut donner une photographie pour dire que ...   ...        5083      384
   3   4  Je comprends bien lintérêt quil peut y avoir...   ...       11335     1132
   4   5         Jai bien compris le concept, cest clair.   ...         258       91
python-3.x pandas csv parsing dictionary-comprehension
2个回答
1
投票

试试这个:

df = pd.read_csv("out.csv", na_values = ['no info', '.'], encoding='latin-    1', delimiter=';')    

df[df['score'] == 1].to_csv("score1.csv")
df[df['score'] == 0].to_csv("score0.csv")

就如此容易。


2
投票

如果您打算使用pd.read_csv(),并且您只想提取符合所需条件的句子,那么您可以执行以下操作:

import pandas as pd

df = pd.read_csv('test.csv', sep=';')

df[df['score']==1]['verbatim'].values

df[df['score']==0]['verbatim'].values

这会给:

[' je suis beau' 'je suis merveilleux']
[' je suis laid' 'je suis repugne']
© www.soinside.com 2019 - 2024. All rights reserved.