如何修改 Pandas DataFrame 中的单元格?

Kub*_*aka 7 python string conditional-statements dataframe pandas

我需要更改 DataFrame 中的单个元素。我尝试做这样的事情,但它不起作用:

for index, row in df.iterrows():
    if df.at[row, index] == 'something':
        df.at[row, index] = df.at[row, index] + 'add a string'
    else:
        df.at[row, index] = df.at[row, index] + 'add a value'
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

jez*_*ael 5

如果需要修改与构造函数一起DataFrame使用的所有列,因为返回:numpy.whereDataFramewherenumpy array

df = pd.DataFrame(np.where(df == 'something', df + 'add a string', df + 'add a value'), 
                  index=df.index, 
                  columns=df.columns)
Run Code Online (Sandbox Code Playgroud)

如果只有一列col

df['col'] = np.where(df['col'] == 'something', 
                     df['col'] + 'add a string', 
                     df['col'] + 'add a value')
Run Code Online (Sandbox Code Playgroud)

样本:

df = pd.DataFrame({'col': ['a', 'b', 'a'], 'col1': ['a', 'b', 'b']})
print (df)
  col col1
0   a    a
1   b    b
2   a    b

df = pd.DataFrame(np.where(df == 'a', df + 'add a string', df + 'add a value'), 
                  index=df.index, 
                  columns=df.columns)
print (df)
             col           col1
0  aadd a string  aadd a string
1   badd a value   badd a value
2  aadd a string   badd a value
Run Code Online (Sandbox Code Playgroud)
df['col'] = np.where(df['col'] == 'a', 
                     df['col'] + 'add a string', 
                     df['col'] + 'add a value')

print (df)
             col col1
0  aadd a string    a
1   badd a value    b
2  aadd a string    b
Run Code Online (Sandbox Code Playgroud)