【问题标题】:Select a subpart of a csv according to another csv根据另一个csv选择一个csv的一个子部分
【发布时间】:2021-06-11 23:04:48
【问题描述】:

我有一个 csv,我想根据另一个 csv 的列对行进行排序。

更准确地说,我有一个数据框 X,它的行由 pandas 以整数递增的顺序(0、1、2、3、...)的特定列索引,并且 N 行中的每一行还有另一列包含一个整数(也按递增顺序 315、378、415,...)。现在我有一个带有几列的 csv Y,并按升序排列 0,1,... 也是。我只想为 X 315、378、415 的特定列中存在的整数选择 Y 的子部分 Y_sub,... 我试过这段代码:

X = pd.read_csv(X)
Y = pd.read_csv(Y)
Y_sub = Y.loc[Y.index.isin(X.index)]

但这给了我 Y 的前 N ​​行。

【问题讨论】:

    标签: python pandas dataframe csv sorting


    【解决方案1】:

    如果我理解你的话,你可以这样做:

    specific_X_column = df_X["col_2"]
    df_Y_subpart = df_Y.iloc[:, specific_X_column]
    

    完整示例:

    为了确保我能很好地理解你,我将重新表述你的问题:

    • 数据框“df_X”有一列包含整数。
    • 这些整数对应于另一个名为“df_Y”的数据帧中的列索引
    • 我们只想选择“df_Y”中的这些列
    import pandas as pd
    
    # Create dataframes "df_X"
    data_X = [["A", 0], ["B", 3], ["C", 5]]
    columns_X = ["col_1", "col_2"]
    df_X = pd.DataFrame(data_X, columns=columns_X)
    print(df_X)
    print()
    
    # Create dataframes "df_Y"
    data_Y = [[0,1,2,3,4,5], [0.0, 10,20,30,40,50]]
    columns_Y = ["col_0", "col_1", "col_2", "col_3", "col_4", "col_5"]
    df_Y = pd.DataFrame(data_Y, columns=columns_Y)
    print(df_Y)
    print()
    
    # Select the column in "df_X" that contains the integers (indexes of columns in "df_Y")
    specific_X_column = df_X["col_2"]
    
    # Select the columns needed in "df_Y"
    df_Y_subpart = df_Y.iloc[:, specific_X_column]
    print(df_Y_subpart)
    

    输出:

      col_1  col_2
    0     A      0
    1     B      3
    2     C      5
    
       col_0  col_1  col_2  col_3  col_4  col_5
    0    0.0      1      2      3      4      5
    1    0.0     10     20     30     40     50
    
       col_0  col_3  col_5
    0    0.0      3      5
    1    0.0     30     50
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      • 2015-02-15
      • 1970-01-01
      • 2021-11-28
      • 1970-01-01
      相关资源
      最近更新 更多