【问题标题】:if value = string in both row and col of df then return new df如果值 = df 的行和列中的字符串,则返回新的 df
【发布时间】:2022-08-17 22:07:09
【问题描述】:

不确定如何返回所需的输出ķ对于字符串 \"START\" 的条件。

不需要使用/保留列名。

输入:

df = pd.DataFrame({\'A\': [\'43\', 23, \'Ndfg\', 34, 0, 56],
               \'B\': [\'5\', 23, \'START\', 89, 0, 4],
               \'C\': [\'65\', 7, \'dsfgA\', 65, 47, 3],
               \'D\': [\'65\', 7, \'gfd\', 3, 0, 7],
               \'E\': [\'76\', 7, \'Start\', 5, 12, 1],
               \'F\': [\'65\', 7, \'sdfA\', 5, 0, 4],
               \'G\': [\'12\', 7, \'START\', 5, 8, 9],
               \'H\': [\'89\', 7, \'gfA\', 5, 0, 8],
               \'I\': [\'23\', 7, \'sdfA\', 5, 7, 23]})

k = []
for rw in range(df.shape[0]):
    for colm in range(df.shape[1]):
        if df.iloc[rw, colm] == \'START\':
            row = rw + 1
            col = colm
            k.append(df.iloc[row:, col:])
            break

输出: df 和 k

df

          A      B      C    D      E     F      G    H     I
0         43      5     65   65     76    65     12   89    23
1         23     23      7    7      7     7      7    7     7
2         Ndfg  START  dsfgA  gfd  Start  sdfA  START  gfA  sdfA
3         34     89     65    3      5     5      5    5     5
4         0      0     47    0     12     0      8    0     7
5         56      4      3    7      1     4      9    8    23

ķ

[    B   C  D   E  F  G  H   I
 3  89  65  3   5  5  5  5   5
 4   0  47  0  12  0  8  0   7
 5   4   3  7   1  4  9  8  23]

k 的期望输出: 只有“开始”下的数字列

    [    B   E  G
     3  89   5  5
     4   0   12 8
     5   4   1  9]

    标签: python pandas


    【解决方案1】:

    你是这个意思吗?

    df.loc[:, df.iloc[2, :].str.upper() == "START"][3:]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-14
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2021-11-15
      相关资源
      最近更新 更多