![](/img/trans.png)
[英]Python Pandas Calculate Number of values in columns for each row and put it in columns
[英]Python pandas: dynamically change values in unspecified number of columns
我有一個簡單的數據框,可能如下所示:
| Label | Average BR_1 | Average BR_2 | Average BR_3 | Average BR_4 |
| ------- | ------------ | ------------ | ------------ | ------------ |
| Label 1 | 50 | 30 | 50 | 50 |
| Label 2 | 60 | 20 | 50 | 50 |
| Label 3 | 65 | 50 | 50 | 50 |
我希望能夠做的是在每一列中添加一個%
符號。
我知道我可以為每一列做這樣的事情:
df['Average BR_1'] = df['Average BR_1'].astype(str) + '%'
然而,問題是,我從其中可能包含更多的這些列的CSV文件中的數據讀取,所以不是Average BR_1
到Average BR_4
,它可能包含Average BR_1
說Average BR_10
。
因此,我希望對列名中包含Average BR_
每一列自動進行此更改。
我一直在閱讀有關.loc
但我只設法將列值更改為一個全新的值,如下所示:
df.loc[:, ['Average BR_1', 'Average BR_2']] = "Hello"
另外,我還沒有能夠在這里實現正則表達式。
我嘗試了一個列表:
colsArr = [c for c in df.columns if 'Average BR_' in c]
print(colsArr)
但我沒有設法用.loc
實現這一點。
我想我可以使用循環來做到這一點,但我覺得必須有一些更好的熊貓解決方案,但我想不通。
你能幫我指出正確的方向嗎?
謝謝
# extract the column names that need to be updated
cols = df.columns[df.columns.str.startswith('Average BR')]
# update the columns
df[cols] = df[cols].astype(str).add('%')
print(df)
Label Average BR_1 Average BR_2 Average BR_3 Average BR_4
0 Label 1 50% 30% 50% 50%
1 Label 2 60% 20% 50% 50%
2 Label 3 65% 50% 50% 50%
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.