Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:从数据框创建列表,该数据框显示符合条件的值的索引_Python_Pandas_Dataframe_Filter - Fatal编程技术网

Python:从数据框创建列表,该数据框显示符合条件的值的索引

Python:从数据框创建列表,该数据框显示符合条件的值的索引,python,pandas,dataframe,filter,Python,Pandas,Dataframe,Filter,抱歉,我是python熊猫的新手,因此可能我的思维方式不正确 下面的数据框显示了在两个列表的每个值之间计算的距离。假设这两个列表包含100个值,那么数据帧由100*100个计算距离组成 数据框如下所示: Columns Place A ... Place Z Rows ... Place 1 1203.899830

抱歉,我是python熊猫的新手,因此可能我的思维方式不正确

下面的数据框显示了在两个列表的每个值之间计算的距离。假设这两个列表包含100个值,那么数据帧由100*100个计算距离组成

数据框如下所示:

       Columns    Place A      ...               Place Z
   Rows                        ...                         
    Place 1       1203.899830  ...               612.069576
    39             496.571302  ...               173.808444
    46            1061.913143  ...               488.477587
    48             978.166934  ...               412.830790
    57            1008.997612  ...               595.226911
    ...                   ...  ...                      ...
    20675         1705.383726  ...              1233.132858
    20676         1562.641365  ...               962.671417
    20678          433.199056  ...               451.470780
    20679          112.586538  ...               720.512590
    Place 20680    53.794611  ...               681.927796
    
    [4068 rows x 179 columns]
我希望在A至Z位置下列出每一个小于100公里的位置(1至20680)。因此,必须为每一列单独应用100公里过滤器

例如,位置1距离位置A 1200公里,因此不应出现在“位置1”列中。位置39距离位置X仅30公里,因此位置39应出现在“位置X”列中

换句话说,小于100 km的值的指数必须列在不同的列中。我知道这样柱子会变得不同长度

到目前为止,我只完成了一个专栏,但我希望每个专栏都能做到:

Input:  Index_label = df_dist_matrix[df_dist_matrix['Place A']< 100].index.tolist()

print(Index_label)

Output:
[175, 252, 379, 398, 455, 486, 523,....., Place 20680]
Input:Index_label=df_dist_矩阵[df_dist_矩阵['Place A']<100]。Index.tolist()
打印(索引标签)
输出:
[175252379398455486523,…,地点20680]

非常感谢您的帮助,谢谢

我选了200公里,因为您的样本数据不太具有代表性。。。然后,每个列都有一个字典及其对应的索引值

df = pd.read_csv(io.StringIO("""       Columns    Place A      ...               Place Z
   Rows                        ...                         
    Place 1       1203.899830  ...               612.069576
    39             496.571302  ...               173.808444
    46            1061.913143  ...               488.477587
    48             978.166934  ...               412.830790
    57            1008.997612  ...               595.226911
    ...                   ...  ...                      ...
    20675         1705.383726  ...              1233.132858
    20676         1562.641365  ...               962.671417
    20678          433.199056  ...               451.470780
    20679          112.586538  ...               720.512590
    Place 20680    53.794611  ...               681.927796"""), sep="\s\s+", engine="python")\
    .drop(columns="...").drop([0,6])

df = df.astype({c:"float64" for c in df.columns if "Place" in c})
{c:df[df[c].lt(200)].index.tolist() for c in df.columns if "Place" in c}
输出

{'Place A': [10, 11], 'Place Z': [2]}

您的数据帧不能在不同的列上具有不一致的大小,因此您需要做的可能是通过
NaN
s填充要删除的值。这实际上是一个很好的值,谢谢!我设法在<100公里的范围内进行过滤,但现在我只剩下列中的距离,我需要列中列出的索引。你知道怎么做吗?这太棒了,谢谢你!一件听起来有点愚蠢的小事。对于我发布的示例,我在列标题中添加了“Place”。在真实文件中,没有“位置”标记,只有名称。考虑到我不知道你在做什么,你能帮我把这个小东西拿出来吗?或者对我来说,把它分解一下,让它更容易理解?无论如何,再次谢谢你!好的,我注意到有一列,然后是一系列以地点开头的列。所以我决定我只想为名称以Place开头的列获取索引,因此
如果c中的“Place”限制它正在处理的列。PyCon 2020上有一个关于列表/词汇理解的非常好的演讲。你可以在YouTube上找到它。此解决方案的核心是使用理解。您不需要的
astype()
就是我清理您的示例数据,以便它可以与数字一起工作,现在这就非常有意义了。谢谢