我有一个数据帧,如下所示。我想做的是创建另一个基于索引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))