Python,Pandas根据索引值创建列

时间:2020-07-06 23:08:24

标签: python pandas

我有一个如下所示的数据框。我想做的是创建另一个基于索引值的列(因此,除10以外的任何内容都将具有另一列并标记为“ 0”)。我尝试过:

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

但是我收到错误消息“ SettingWithCopyWarning:”

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

2 个答案:

答案 0 :(得分:0)

您还可以使用Assign返回数据框的副本。

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

答案 1 :(得分:0)

您可以这样操作:

RewriteCond %{QUERY_STRING} !^q=$
RewriteRule ^$ "https://product-qa.z.apteka24.ua" [P]

输出:

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

取决于最初创建df的方式,如果您通过切片更大的数据帧来创建df,则可以使用df_larger = df [condition] .copy()来防止出现“ SettingWithCopy”警告消息。这不是错误,只是警告您对df所做的更改可能不会传播回df_larger。