簡體   English   中英

在適當的地方轉換pandas python數據框列值

[英]Convert pandas python data frame column values in place

我有一列正負數,我想將其轉換為0和1的列表。 如果數字為正,則應將其替換為1。如果數字為負或0,則應將其替換為0。我該怎么做?

例如,在R中,我會這樣做:

list = ifelse(list > 0, 1, 0)

您可以返回boolean值,並使用astype(int)將它們轉換為10

print((df['A'] > 0).astype(int))

例:

df = pd.DataFrame({'A': [1,-1,2,-2,3,-3]})
print(df)
A
0  1
1 -1
2  2
3 -2
4  3
5 -3
print((df['A'] > 0).astype(int))
0    1
1    0
2    1
3    0
4    1
5    0

您可以使用索引器和.loc來更改值,例如

 indexer = df[df['col']>0].index
 df.loc[indexer] = 1

  indexer_2 = df[df['col']<0].index
  df.loc[indexer_2] = 0

或者你可以看看numpy.where這樣的

import numpy as np
import pandas as pd
pd.DataFrame(np.where(df>0,1,0),index=df.index)

您可以使用DataFrame.apply將函數應用於DataFrame.apply每一行。 例如:

import numpy as np
import pandas as pd
df = pd.DataFrame({'A': [1, -2, 3, -4]})
df['A'] = df.apply(lambda row:np.where(row['A'] > 0, 1, 0), axis=1)

lambda函數可以用任何函數替換(不必是lambda ),而axis=1會將函數應用於每一行而不是每一列。

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.apply.html

暫無
暫無

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

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