第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python-pandas:基于索引的新列?

python-pandas:基于索引的新列?

HUWWW 2023-09-26 14:01:37
我有一個類似于下面的 df :        name    age sex   1    john    12  m   2    mary    13  f   3    joseph  12  m   4    maria   14  f如何根據(jù)索引創(chuàng)建新列?例如,對于索引 1 和 2,我希望它們有標(biāo)簽1,對于索引 3 和 4,我希望它們有標(biāo)簽2,如下所示:        name    age sex label   1    john    12  m   cluster1   2    mary    13  f   cluster1   3    joseph  12  m   cluster2   4    maria   14  f   cluster2我應(yīng)該使用類似的東西(df.index.isin([1, 2])) == 'cluster1'嗎?我認為不可能假設(shè)一df['target'] = (df.index.isin([1, 2])) == 'cluster1開始label就不存在。
查看完整描述

4 回答

?
瀟瀟雨雨

TA貢獻1833條經(jīng)驗 獲得超4個贊

我想這就是你要找的東西?您可以使用不同集群的列表,以這種方式使您的標(biāo)簽任意。


import pandas as pd

data = {'name':['bob','sue','mary','steve'], 'age':[11, 23, 53, 44]}


df = pd.DataFrame(data)

print(df)

df['label'] = 0

cluster1 = [0, 3]

cluster2 = [1, 2]

df.loc[cluster1, 'label'] = 1

df.loc[cluster2, 'label'] = 2    

#another way

#df.iloc[cluster1, df.columns.get_loc('label')] = 1

#df.iloc[cluster2, df.columns.get_loc('label')] = 2

print(df)

輸出:


    name  age

0    bob   11

1    sue   23

2   mary   53

3  steve   44

    name  age  label

0    bob   11      1

1    sue   23      2

2   mary   53      2

3  steve   44      1

您可以讓初始列創(chuàng)建為任何內(nèi)容。因此,您可以將其設(shè)置為集群值之一(這樣您只需手動設(shè)置另一個集群,而不是同時設(shè)置兩者),也可以將其設(shè)置為集群值,這樣您就可以在分配標(biāo)簽后輕松檢查是否錯過了任何集群None值行。


如果對集群的分配確實是任意的,我認為您無法比這更自動化。


查看完整回答
反對 回復(fù) 2023-09-26
?
慕妹3242003

TA貢獻1824條經(jīng)驗 獲得超6個贊

這是您正在尋找的解決方案嗎?我將數(shù)據(jù)加倍,以便您可以嘗試不同的序列。在這里,如果您編寫 create_label(df, 3) 而不是 2,它將以 3 乘 3 的方式進行迭代。它為您提供了獲得參數(shù)化解決方案的機會。


import pandas as pd

df = pd.DataFrame({'name': ['john', 'mary', 'joseph', 'maria', 'john', 'mary', 'joseph', 'maria'],

                   'age': [12, 13, 12, 14, 12, 13, 12, 14],

                   'sex': ['m', 'f','m', 'f', 'm', 'f','m', 'f']})


df.index = df.index + 1


df['label'] = pd.Series()

def create_label(data, each_row):

   i = 0

   j = 1

   while i <= len(data):

      data['label'][i: i + each_row] = 'label' + str(j)

      i += each_row

      j += 1

   return data


df_new = create_label(df, 2)


查看完整回答
反對 回復(fù) 2023-09-26
?
波斯汪

TA貢獻1811條經(jīng)驗 獲得超4個贊

對于小型數(shù)據(jù)框或數(shù)據(jù)集,您可以使用以下代碼


Label=pd.Series(['cluster1','cluster1','cluster2','cluster2'])

df['label']=Label


查看完整回答
反對 回復(fù) 2023-09-26
?
慕田峪9158850

TA貢獻1794條經(jīng)驗 獲得超8個贊

您可以使用 for 循環(huán)并使用列表來獲取包含所需數(shù)據(jù)的新列


import pandas as pd

df = pd.read_csv("dataset.csv")

list1 = []

for i in range(len(df.name)):

   if i < 2:

      list1.append('cluster1')

   else:

      list1.append('cluster2')

label = pd.Series(list1)

df['label'] = label


查看完整回答
反對 回復(fù) 2023-09-26
  • 4 回答
  • 0 關(guān)注
  • 179 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號