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

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

Pandas - 根據(jù)特定列的值在 DataFrame 中創(chuàng)建單獨的列

Pandas - 根據(jù)特定列的值在 DataFrame 中創(chuàng)建單獨的列

牛魔王的故事 2021-06-06 08:27:02
假設我有一個簡單的 Pandas DataFrame,其中一列包含國家/地區(qū)名稱,另一列包含一些值。例如:# Import Python Librariesimport numpy as npimport pandas as pd# Create Sample DataFramedf = pd.DataFrame(data={'Country': ['United States','United States','United States','United States', \                     'United States','United States','United States','United States', \                     'United States','United States','United States','United States', \                     'Canada','Canada','Canada','Canada','Canada','Canada','Mexico', \                     'Mexico','Mexico','Mexico','England','England','England','England', \                     'England','England','England','England','England','England','England', \                     'England','England','England','France','France','France','Spain','Germany', \                     'Germany','Germany','Germany','Germany','Germany','Germany','Germany', \                     'Germany','Germany'], 'Value': np.random.randint(1000, size=50)})產生:print(df.head())Index     Country     Value  0    United States   943  1    United States   567  2    United States   534  3    United States   700  4    United States   470我的問題是,在 Python 中將此 DataFrame 轉換為每個國家/地區(qū)都有自己的列并且該國家/地區(qū)的所有值都列在該列中的最簡單方法是什么?換句話說,我如何輕松創(chuàng)建一個 DataFrame,其中列數(shù)是“Country”列中國家的唯一計數(shù),并且每列的長度將根據(jù)相應國家/地區(qū)在原始 DataFrame 中出現(xiàn)的次數(shù)而有所不同?以下是提供解決方案的示例代碼:# Store Unique Country Names in Variablecolumns = df['Country'].unique()# Create Individual Country DataFramesdf_0 = df[df['Country'] == columns[0]]['Value'].values.tolist()df_1 = df[df['Country'] == columns[1]]['Value'].values.tolist()df_2 = df[df['Country'] == columns[2]]['Value'].values.tolist()df_3 = df[df['Country'] == columns[3]]['Value'].values.tolist()df_4 = df[df['Country'] == columns[4]]['Value'].values.tolist()df_5 = df[df['Country'] == columns[5]]['Value'].values.tolist()df_6 = df[df['Country'] == columns[6]]['Value'].values.tolist()雖然上面的代碼有效,但對于較大的數(shù)據(jù)集,它顯然不是一個站得住腳的解決方案。從原始 DataFrame 生成此結果的最有效方法是什么?
查看完整描述

3 回答

?
翻過高山走不出你

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

使用groupby,cumcount以及unstack用T:


df.set_index(['Country',df.groupby('Country').cumcount()])['Value'].unstack().T

輸出:


Country  Canada  England  France  Germany  Mexico  Spain  United States

0         535.0    666.0   545.0    522.0   581.0  525.0          394.0

1         917.0    130.0    76.0    882.0   563.0    NaN          936.0

2         344.0    376.0   960.0    442.0   247.0    NaN          819.0

3         760.0    272.0     NaN    604.0   976.0    NaN          975.0

4         745.0    199.0     NaN    512.0     NaN    NaN          123.0

5         654.0    102.0     NaN    114.0     NaN    NaN          690.0

6           NaN    570.0     NaN    318.0     NaN    NaN          568.0

7           NaN    807.0     NaN    523.0     NaN    NaN          385.0

8           NaN     18.0     NaN    890.0     NaN    NaN          451.0

9           NaN     26.0     NaN    635.0     NaN    NaN          282.0

10          NaN    871.0     NaN      NaN     NaN    NaN          771.0

11          NaN    122.0     NaN      NaN     NaN    NaN          505.0

12          NaN      0.0     NaN      NaN     NaN    NaN            NaN

13          NaN    578.0     NaN      NaN     NaN    NaN            NaN


查看完整回答
反對 回復 2021-06-09
?
慕森王

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

pd.pivot 帶你到一半,這里的問題是你的索引沒有信息所以你的非 NaN 值不在 df 的頂部


df.pivot(index=None, columns='Country', values = 'Value')


Country  Canada  England  France      ...        Mexico  Spain  United States

0           NaN      NaN     NaN      ...           NaN    NaN          992.0

1           NaN      NaN     NaN      ...           NaN    NaN          814.0

2           NaN      NaN     NaN      ...           NaN    NaN          489.0

3           NaN      NaN     NaN      ...           NaN    NaN          943.0

4           NaN      NaN     NaN      ...           NaN    NaN          574.0

5           NaN      NaN     NaN      ...           NaN    NaN          428.0

6           NaN      NaN     NaN      ...           NaN    NaN          907.0

7           NaN      NaN     NaN      ...           NaN    NaN          899.0

8           NaN      NaN     NaN      ...           NaN    NaN          379.0

9           NaN      NaN     NaN      ...           NaN    NaN          130.0


查看完整回答
反對 回復 2021-06-09
  • 3 回答
  • 0 關注
  • 225 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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