gpt4 book ai didi

python - 如何在处理文本时使用 pandas 忽略 CSV 列中的空值?

转载 作者:行者123 更新时间:2023-12-01 07:41:33 24 4
gpt4 key购买 nike

我有一个 CSV 文件,句子中的每个单词都在单元格中表示,每个句子之间有一个空单元格。

CSV snippet file

我的问题是在 run_id 列中,在使用 pandas 加载 csv 文件后,我使用函数“从 df 发送”分隔每个句子,但我有一行断言,仔细检查run_id 是唯一的且=1,但它失败,因为它将“Null”作为“空句子”

以下是我的代码片段,希望对您有所帮助

注意:我正在处理 T="test_RE"

def load_dataset(fn,T):

if T=="test_RE":
df = pandas.read_csv(fn,
sep= ";",
header=0,
keep_default_na=False)
df.drop(df.columns[df.columns.str.contains('unnamed',case = False)],axis = 1, inplace = True)
df.word_id = pd.to_numeric(df.word_id, errors='coerce').astype('Int64')
df.run_id = pd.to_numeric(df.run_id, errors='coerce').astype('Int64')
df.sent_id = pd.to_numeric(df.sent_id, errors='coerce').astype('Int64')
df.head_pred_id = pd.to_numeric(df.head_pred_id, errors='coerce').astype('Int64')
else:
df = pandas.read_csv(fn,
sep= "\t",
header=0,
keep_default_na=False)
print (df.dtypes)

if T=="train":
encoder.fit(df.label.values)
print('this is the IF cond')
print('df.label.values. shape',df.label.values.shape)

sents = get_sents_from_df(df)

print('shape of sents 0',sents[0].shape)
print('sents[0]',sents[0])
print('shape of sents 1',sents[1].shape)
print('sents[1]',sents[1])

#make sure that all sents agree on run_id

assert(all([len(set(sent.run_id.values)) == 1
for sent in sents])) **ERROR HERE**

函数

def get_sents_from_df( df):

#Split a data frame by rows accroding to the sentences
return [df[df.run_id == run_id]
for run_id
in sorted(set(df.run_id.values))]

发送的0的形状是(10,8),这是正确的,发送的[0]也是正确的

但是发送的形状1是 (0,8) 并且当然发送 1没有打印,因为它为空,我应该发送 1形状=(6,8)有什么帮助吗?

打印语句输出图像:

Output of print stsatemts

最佳答案

要跳过空白行(其中包含 None 值和空字符串),为什么不这样做:

df = df[df.word.apply(lambda x : len(x)>0)]

关于python - 如何在处理文本时使用 pandas 忽略 CSV 列中的空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56681786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com