簡體   English   中英

遍歷包含相同 substring 的 dataframe 的多列

[英]Iterate through multiple columns of dataframe that contain the same substring

考慮以下數據框:

指數 字符串 A 酒吧 字符串 B
第一的 15 0 3
第二 0 2 25

我有以下邏輯,允許我遍歷數據框的單列並訪問特定單元格並更改其值。 如果名稱為String A的列中單元格的值不是NaN ,則該列之前的單元格的值應更改為NaN

for idx, val in enumerate(df['String A']):
        if not math.isnan(val) :
            df.iloc[: , df.columns.get_loc('String A')-1].iloc[idx] = np.nan

有沒有一種方法可以概括循環,以便我可以遍歷包含 substring String的所有列,以便循環適用於String AString B列(或包含此子字符串的任何列)。

該表應如下所示:

指數 字符串 A 酒吧 字符串 B
第一的 15 3
第二 2 25

編輯:為問題添加了更多詳細信息

您可以對列進行子集化並使用apply進行迭代:

relevant = df.columns.str.contains('String')
df.loc[:, relevant] = df.loc[:, relevant].apply(...)

為了保持使用原始 for 循環,您可以執行以下操作:

for idx, val in enumerate(df): 
    if 'String' in val: 
        print(val)

嘗試:

for idx in [i for i, c in enumerate(df.columns) if c.startswith("String")]:
    df.iloc[:, idx-1] = df.iloc[:, idx-1].where(df.iloc[:,idx].isnull())

>>> df
         foo  String A   bar  String B
Index                                 
First   15.0       NaN   NaN       3.0
Second   NaN       2.0  25.0       NaN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM