Python,Pandas根据索引值创建列



我有一个数据帧,如下所示。我想做的是创建另一个基于索引VALUE的列(因此,任何小于10的列都将有另一个列,并标记为"0"(。我尝试过:

df['Disp'] = '0'
df['Disp'][df.index < 10] = '1'

但是我得到了错误";使用复制警告设置:";

df = pd.DataFrame({ 'Hora': [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],
'EUGE': ['RE','RE','RE','RE','RE','RE','RE','RE','RE','RE','RE','RE','RE','RE','RE'], 
'Tipo_Dato': ['DM','DM','DM','DS','DS','DS','DM','DS','DS','DM','DM','DM','DS','DM','DM']})

我应该得到:

Hora EUGE Tipo_Dato  Disp
0      1   RE        DM     0
1      2   RE        DM     0
2      3   RE        DM     0
3      4   RE        DS     0
4      5   RE        DS     0
5      6   RE        DS     0
6      7   RE        DM     0
7      8   RE        DS     0
8      9   RE        DS     0
9     10   RE        DM     0
10    11   RE        DM     1
11    12   RE        DM     1
12    13   RE        DS     1
13    14   RE        DM     1

您可以这样做:

df['Dist'] = (df.index >= 10 ).astype(int)

输出:

Hora EUGE Tipo_Dato  Dist
0      1   RE        DM     0
1      2   RE        DM     0
2      3   RE        DM     0
3      4   RE        DS     0
4      5   RE        DS     0
5      6   RE        DS     0
6      7   RE        DM     0
7      8   RE        DS     0
8      9   RE        DS     0
9     10   RE        DM     0
10    11   RE        DM     1
11    12   RE        DM     1
12    13   RE        DS     1
13    14   RE        DM     1
14    15   RE        DM     1

根据df最初是如何创建的,如果您通过切片更大的数据帧来创建df,则可以使用df_larger=df[condition].copy((来防止"SettingWithCopy"警告消息。这不是错误,只是警告您对df的更改可能不会传播回df_larger。

您还可以使用assign返回数据帧的副本。

df.assign(Disp = np.where(df.index<10,1,0))

最新更新