将列表列表中的第三个元素转换为更pythonic的int



我有一个带有名称(last_name,名称,年龄(的csv文件,我想将所有年龄属性转换为整数。这是一种方法,但我想还有一种更 pythonic 的方法可以做到这一点?我试图用列表理解来做到这一点,但它并没有像我想要的那样工作。

import csv
with open("names.csv") as names_file:
head , *names = csv.reader(names_file)
names = [line for line in names]
for i in range(len(names)):
names[i][2] = int(names[i][2])

提前谢谢。

处理此问题的最佳方法:

import pandas as pd
df = pd.read_csv('names.csv')
df["age"] = pd.to_numeric(df["age"])

如果你想要一个列表,只需这样做:

list_ = df['age'].to_list()
print(list_)
import csv
with open("names.csv") as names_file:
head, *names = csv.reader(names_file)
names = [[f, l, int(a)] for f, l, a in names]

我会这样做:

names = [['A', 'B', '20'], ['C', 'D', '30'], ['E', 'F', '40']]  # sample data
for i in names:
i[2] = int(i[2])
print(names)

哪个比以下更简洁:

for i in range(len(names)):
names[i][2] = int(names[i][2])

如果你必须使用列表理解,那么你可以这样做:

names = [['A', 'B', '20'], ['C', 'D', '30'], ['E', 'F', '40']]
names = [[int(j) if inx==2 else j for inx, j in enumerate(i)] for i in names]
print(names)

输出:

[['A', 'B', 20], ['C', 'D', 30], ['E', 'F', 40]]

请注意,此工具嵌套,因此不如上述关于可读性的解决方案可取。

最新更新