我有一個資料框,想根據另一列的條件更新列中的特定單元格。
ID Name Metric Unit Value
2 1 K2 M1 msecond 1
3 1 K2 M2 NaN 10
4 2 K2 M1 usecond 500
5 2 K2 M2 NaN 8
條件是,如果Unit字串為msecond,則將Value列中對應的值乘以1000 并存盤在同一位置。考慮行迭代的恒定步長(二乘二),以下代碼不正確
i = 0
while i < len(df_group):
x = df.iloc[i].at["Unit"]
if x == 'msecond':
df.iloc[i].at["Value"] = df.iloc[i].at["Value"] * 1000
i = 2
但是,輸出與修改前相同。我該如何解決?還有什么是更好的編碼而不是 while 回圈的替代方案?
uj5u.com熱心網友回復:
一個更簡單(更有效)的形式是使用loc:
df.loc[df['Unit'] == 'msecond', 'Value'] *= 100
如果您認為基本上只更新索引的特定步驟:
step = 2
start = 0
df.loc[df['Unit'].eq('msecond') & (df.index % step == start), 'Value'] *= 100
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/399322.html
