我正在尝试基于列值访问一些行。我读了一个CSV
df = pd.read_csv("edges.txt", dtype=str)
它创建以下DataFrame:
TripId MatchId StartHour Source Destination
0 20120401017000 0 7 28819367 52408159
1 20120401017000 0 7 52408159 62804102
2 20120401017000 0 7 62804102 65398897
3 20120401017000 0 7 65398897 65398897
4 20120401017000 0 7 74066894 77482478
... ... ... ... ... ...
62014 20120430097008 1 18 78141321 88912706
62015 20120430097008 1 18 88912706 218287467
62016 20120430097008 1 18 218287467 236637429
62017 20120430097008 1 18 236637429 245325123
62018 20120430097008 1 18 245325123 245374827
当我访问具有特定ID的旅行时,它可以正常工作:
df.loc[df["TripId"] == "20120401017000"]
TripId MatchId StartHour Source Destination
0 20120401017000 0 7 28819367 52408159
1 20120401017000 0 7 52408159 62804102
2 20120401017000 0 7 62804102 65398897
3 20120401017000 0 7 65398897 74066894
4 20120401017000 0 7 74066894 77482478
... ... ... ... ... ...
86 20120401017000 2 7 330994406 484314696
87 20120401017000 2 7 484314696 502572843
88 20120401017000 2 7 502572843 758286629
89 20120401017000 2 7 758286629 791164312
90 20120401017000 2 7 791164312 974728472
但是,当我尝试使用特定的
MatchId
访问行时,它将返回一个空的DataFrame:df.loc[df["MatchId"] == "2"]
TripId MatchId StartHour Source Destination
除
TripId
外,所有列均相同:df.loc[df["Source"] == "283782532"]
TripId MatchId StartHour Source Destination
我对此有些困惑。
TripId
不是索引,并且在任何方面似乎都不特殊。我确保每个值都是一个字符串:df.dtypes
TripId object
MatchId object
StartHour object
Source object
Destination object
dtype: object
我有些困惑,为什么除
TripId
之外的所有列都返回一个空的DataFrame。 TripId
不是索引,并且在任何方面似乎都不特殊。如何为
TripId
以外的列访问具有特定值的行?谢谢。
最佳答案
原则上,您的命令应该像对df [“ TripId”]一样起作用。您是否检查了前导/后缀空格?
any(char.isspace() for char in df.iloc[0][1])
关于python - Pandas-`loc`在除一列外的所有列上返回空的DataFrame,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58878050/