我是一个使用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'])