如果.csv列标题"name"则 Pandas Iterrows 的输出与其他文本不同



我是一个使用panda查看csv的初学者。我使用.iterrows((来查看给定的记录是否与今天的日期匹配,到目前为止还不错。但是,当为列标题为"name"的.csv调用(row.name(时,我得到的输出与重命名列并编辑(row."column-heading"(以匹配时不同。我可以称之为";name";并获得正确的输出。在来这里之前,我试过(row.notthename((row.fish(和(row.thisisodd(,它们都很好。

如果birthdays.csv中的第一个colmumn是";name";并且我调用print(row.name(,它返回";2〃;。如果第一列是"0";不是名字";我调用print(row.notthename(,它返回相关的名称。什么东西?我不明白为什么任意重命名列和函数调用会产生不同的输出?

例如情况A:列命名为";name";

birthdays.csv:
name,email,year,month,day
a test name,test@email.com,1961,12,21
testerito,blagh@sdgdg.com,1985,02,23
testeroonie,sihgfdb@sidkghsb.com,2022,01,17
data = pandas.read_csv("birthdays.csv")
for (index, row) in data.iterrows():
if (dt.datetime.now()).month == row.month and (dt.datetime.now()).day == row.day:
print(row.name)

输出";2〃;

而情况B:列命名为"B";不是名字";

data = pandas.read_csv("birthdays.csv")
for (index, row) in data.iterrows():
if (dt.datetime.now()).month == row.month and (dt.datetime.now()).day == row.day:
print(row.notthename)

输出";testeroonie";

我错过了什么。。。。是否对";name";继续吗?

谢谢你帮我学习!

这是因为DataFrame.iterrows返回一个Series对象,而Series对象有一个名为name的内置属性。这就是为什么在列名中使用对象快捷方式虽然很方便,但可能很危险。字典符号没有这个问题:
print(row['name'])

最新更新