簡體   English   中英

如何將值設置為按python DataFrame中的行過濾的單元格?

[英]How to set value to a cell filtered by rows in python DataFrame?

import pandas as pd

df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9],[10,11,12]],columns=['A','B','C'])
df[df['B']%2 ==0]['C'] = 5

我希望此代碼將列 C 的值更改為 5,無論 B 為偶數。 但它不起作用。

它返回表如下

    A   B   C
0   1   2   3
1   4   5   6
2   7   8   9
3   10  11  12

我期待它回來

    A   B   C
0   1   2   5
1   4   5   6
2   7   8   5
3   10  11  12

如果需要更改DataFrame中列的DataFrame是必要的DataFrame.loc與條件和列名:

df.loc[df['B']%2 ==0, 'C'] = 5
print (df)
    A   B   C
0   1   2   5
1   4   5   6
2   7   8   5
3  10  11  12

您的解決方案是鏈式索引 - docs 的一個很好的例子。

您可以將順序更改為:

df['C'][df['B']%2 == 0] = 5

它也有效

使用 numpy where

df['C'] = np.where(df['B']%2 == 0, 5, df['C'])

輸出

    A   B   C
0   1   2   5
1   4   5   6
2   7   8   5
3   10  11  12

暫無
暫無

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

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