【问题标题】:merge some rows in two conditions在两个条件下合并一些行
【发布时间】:2021-04-11 19:49:37
【问题描述】:

我想合并条件中的行。如果该行的长度少于 20 个字符,则将该行与前一行合并。但是我有两列,我想在第二列的代码中应用条件,如果任何行包含少于 20 个字符,请删除两列的行。

我已经在这里获得了合并行的帮助,但是如果我现在只有一列,我有不同的要求。我有两列,想在第二行应用操作,任何行少于 20 个字符 将此行与前一行合并,并从两列中删除此行。

这是合并和删除行的旧代码,但是当我有一列时。谢谢你的帮助。 我正在尝试这段代码,但没有给出结果。

import csv 
import pandas as pd

df = pd.read_csv('Test.csv')

with open('Output.csv', mode='w', newline='', encoding='utf-16') as f:
    writer = csv.writer(f, delimiter=' ')
    rows = []
    for i, data in enumerate(df['Sentence']):
        if i + 1 == len(df['Sentence']):
            writer.writerow([data])
        elif len(df['Sentence'][i + 1]) < 20:
            writer.writerow([data + df['Sentence'][i + 1]])
            df.drop(df.index[[i + 1]])
        elif len(df['Sentence'][i + 1]) >= 20:
            writer.writerow([data])

【问题讨论】:

  • 在修改代码以满足您的需要之前,您需要很好地理解代码。不要只是复制粘贴它。
  • @user202729 我正在编辑新需求的代码,但没有结果

标签: python csv merge


【解决方案1】:

我通过将行设为 null 然后将其从 CSV 中删除来解决此问题

df = pd.read_csv('test.csv', encoding='utf-8')

with open('output.csv', mode='w', newline='', encoding='utf-16') as f:
    writer = csv.writer(f, delimiter=' ')
    rows = []
    for i, data in enumerate(df['Sentence']):
        if i + 1 == len(df['Sentence']):
            writer.writerow([data])
        elif len(df['Sentence'][i + 1]) < 19:
            writer.writerow([data + df['Sentence'][i + 1]])
            df['Sentence'][i + 1] = ''
        elif len(df['Sentence'][i + 1]) >= 19:
            writer.writerow([data])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多