【问题标题】:What is the equivalent of writerow() from csv module in pandas?pandas csv 模块中的 writerow() 等价物是什么?
【发布时间】:2019-11-11 21:03:23
【问题描述】:

我目前正在为脚本制作不同的函数,并且我有一个与 writerow() 完美配合的函数,但是对于我的其他函数,我使用了 pandas,我正在尝试寻找与之等效的函数。我很确定to_csv 不是我想要的。

这是在两个函数上测试的同一个 CSV。

jeffrey,192.168.1.1,example1.com,30220,internet serverice provider 1
mike,192.168.1.2,example2.com,30220,internet service provider 1
frank,192.168.1.3,example3.com,30220,internet service provider 1
lucy,192.168.1.4,example4.com,14619,internet service provider 2
louisa,192.168.1.5,example5.com,14619,internet service provider 2
emily,192.168.1.6,example6.com,3357,internet service provider 3 
john,192.168.1.7,example7.com,210,internet service provider 4

这是我的脚本,适用于writerow()

import csv

document= open("sample.csv")

def start_yes():
    with open ('good_numbers', 'w') as output:
        with document as file:
            output_data = csv.writer(output, delimiter = ',')
            reader = csv.reader(file)
            list_1 = ['3357','210']
            for row in reader:
                if row[3] in list_1:
                    output_data.writerow(row)

使用 sample.csv 运行此脚本会为我提供这样的结果,这正是我想要的。

emily,192.168.1.6,example6.com,3357,internet service provider 3 
john,192.168.1.7,example7.com,210,internet service provider 4

这是我试图找到与 writerow() 等效的脚本,但使用的是 pandas 模块。

import pandas as pd 

df = pd.read_csv('sample.csv', header=None)
good_nums = ['3357','210']
bad_nums = ['30220']
maybe_nums = list(set(df[3].tolist()) - set(good_nums + bad_nums))
for asn in df: 
    if asn in df[3]:
    asn.to_csv('output.csv', index=False)

如何使用使用 pandas 的脚本使我的结果看起来像这样

lucy,192.168.1.4,example4.com,14619,internet service provider 2
louisa,192.168.1.5,example5.com,14619,internet service provider 2

非常感谢任何帮助!

【问题讨论】:

  • 使用 pandas 时,显式循环通常是不必要的,而且非常不利。

标签: python python-3.x pandas csv if-statement


【解决方案1】:

你可以使用

df = pd.read_csv('sample.csv', header=None)
good_nums = [3357,210]
df.loc[df['numbercolumn'].isin(good_nums)].to_csv('output.csv',index=False)

这也更快,因为您不会通过循环逐行编写它..

【讨论】:

    猜你喜欢
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 2022-11-06
    • 2019-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多