gpt4 book ai didi

csv - 删除多列

转载 作者:行者123 更新时间:2023-12-05 01:28:53 25 4
gpt4 key购买 nike

我试图在不使用字段信息的情况下一次删除多个列。我每个月都会从该县收到一份 CSV 文件,其中有多个字段我不想与公众共享。到目前为止,每个月我都会手动删除每个字段。因为我正在尝试学习 python,所以我想学习如何创建一个脚本来完成它。我想删除 58 个字段,所以我不想为每个字段编写脚本,但希望创建一个范围来删除它们。我在这里的论坛上搜索了几个小时,尝试了很多不同的方法,我不知道从哪里开始或停止。任何帮助将不胜感激。

最佳答案

我很懒惰,所以我喜欢尽可能使用现有的库,并且已成为 pandas 的传道者图书馆。使用@Tim Pietzcker 的示例:

Name,Sex,Address,Age
John,M,New York,40
Mary,F,Los Angeles,30

我们可以只保留我们想要使用的列:

import pandas as pd
df = pd.read_csv("to_remove.csv")
keep_cols = ["Name", "Address"]
new_df = df[keep_cols]
new_df.to_csv("removed.csv", index=False)

(我们也可以单行,但我认为这样更清楚。)


解释如下。首先,我们可以将文件读入一个名为 DataFrame 的存储对象:

>>> import pandas as pd
>>> df = pd.read_csv("to_remove.csv")
>>> df
Name Sex Address Age
0 John M New York 40
1 Mary F Los Angeles 30

我们可以从此对象中选择一列或多列:

>>> df[["Name", "Sex"]]
Name Sex
0 John M
1 Mary F

然后写出来:

>>> new_df = df[["Name", "Sex"]]
>>> new_df.to_csv("removed.csv", index=False)

(index=False 位只是告诉它不要添加计算行数的列,即上面的数字 0、1),生成

Name,Sex
John,M
Mary,F

我们也可以决定只保留以字母“A”开头的列:

>>> [col for col in df.columns if col.startswith("A")]
['Address', 'Age']
>>> df[[col for col in df.columns if col.startswith("A")]]
Address Age
0 New York 40
1 Los Angeles 30

或使用 .ix 方法只保留从 #1 到倒数第二个的列:

>>> df.ix[:,1:-1]
Sex Address
0 M New York
1 F Los Angeles

等等。

关于csv - 删除多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15887372/

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