[英]Iterate through columns in a dataframe and plot on the same graph (Python)
[英]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 A
和String 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.