【发布时间】:2021-02-03 04:29:24
【问题描述】:
我正在尝试使用 Pandas 读取 csv 文件,但第一列包含用逗号分隔的名字和姓氏。这导致 Pandas 认为有 5 列而不是 4 列,因此最后一列现在没有标题,因此无法选择。
文件如下所示:
CustomerName,ClientID,EmailDate,EmailAddress
FNAME1,LNAME1,100,2019-01-13 00:00:00.000,FNAME1@HOTMAIL.COM
FNAME2,LNAME2,100,2019-01-13 00:00:00.000,FNAME2@GMAIL.COM
FNAME3,LNAME3,100,2019-01-13 00:00:00.000,FNAME3@AOL.COM
FNAME4,LNAME4,100,2019-01-13 00:00:00.000,FNAME40@GMAIL.COM
FNAME5,LNAME5,100,2019-01-13 00:00:00.000,FNAME5@AOL.COM
我的代码现在的样子:
def convert_ftp_data():
file = os.getcwd() + "/data.csv"
data = pd.read_csv(file, index_col=False)
data["first_name"] = data["CustomerName"].str.split().str[0].str.title()
data["email"] = data["EmailAddress"]
clean_data = data.drop(data[["CustomerName", "ClientID", "EmailDate", "EmailAddress"]], 1)
print(clean_data)
使用我的代码,我得到以下输出:
first_name email
0 FNAME1 2019-01-13 00:00:00.000
1 FNAME1 2019-01-13 00:00:00.000
2 FNAME1 2019-01-13 00:00:00.000
3 FNAME1 2019-01-13 00:00:00.000
4 FNAME1 2019-01-13 00:00:00.000
我只需要选择 FNAME 和 EmailAddress 字段。最好的方法是什么?
【问题讨论】:
-
.iloc也许? -
df.loc[:, ['first_name','EmailAddress']]或更精确地使用切片! -
带逗号的数据要用双引号括起来
"FNAME1,LNAME1" -
@DavidLemon 不幸的是,我无法控制数据的发送方式
-
@user5173426 你能详细说明一下吗?试图了解如何解决这个问题,这样我就不会再遇到这个了
标签: python pandas csv dataframe