我正在尝试基于列值访问一些行。我读了一个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/

10-09 20:24