Python 将dataframe列值提取为独立列
我有一个熊猫数据框,定义如下:Python 将dataframe列值提取为独立列,python,pandas,dataframe,pivot,pivot-table,Python,Pandas,Dataframe,Pivot,Pivot Table,我有一个熊猫数据框,定义如下: df = pd.DataFrame({'Country': ['US', 'US', 'CA', 'CA', 'BE', 'BE', 'BE', 'MX'], 'Language': ['en', 'es', 'en', 'fr', 'nl', 'fr', 'de', 'es']}) 我想透视/转换这个数据帧,这样language列下的值就可以组成单独的列,如 做这件事最干净、最简单的方法是什么?我会分配一个新列,并基
df = pd.DataFrame({'Country': ['US', 'US', 'CA', 'CA', 'BE', 'BE', 'BE', 'MX'],
'Language': ['en', 'es', 'en', 'fr', 'nl', 'fr', 'de', 'es']})
我想透视/转换这个数据帧,这样language列下的值就可以组成单独的列,如
做这件事最干净、最简单的方法是什么?我会分配一个新列,并基于该列进行透视:
df.assign(
lang_id='Lang' + df.groupby('Country').cumcount().add(1).astype('str')
).pivot(index='Country', columns='lang_id', values='Language').reset_index()
lang_id Country Lang1 Lang2 Lang3
0 BE nl fr de
1 CA en fr None
2 MX es None None
3 US en es None
另一种选择是:
df.groupby('Country')['Language'].apply(list).apply(pd.Series).reset_index()
Out:
Country 0 1 2
0 BE nl fr de
1 CA en fr NaN
2 MX es NaN NaN
3 US en es NaN
对于这两种情况,您都可以在末尾调用
fillna(“”)
,用空字符串填充NAN。我将分配一个新列,并基于该列进行透视:
df.assign(
lang_id='Lang' + df.groupby('Country').cumcount().add(1).astype('str')
).pivot(index='Country', columns='lang_id', values='Language').reset_index()
lang_id Country Lang1 Lang2 Lang3
0 BE nl fr de
1 CA en fr None
2 MX es None None
3 US en es None
另一种选择是:
df.groupby('Country')['Language'].apply(list).apply(pd.Series).reset_index()
Out:
Country 0 1 2
0 BE nl fr de
1 CA en fr NaN
2 MX es NaN NaN
3 US en es NaN
对于这两种方法,您都可以在末尾调用
fillna(“”)
,用空字符串填充NAN。您也可以尝试此方法
df = pd.DataFrame({'Country': ['US', 'US', 'CA', 'CA', 'BE', 'BE', 'BE', 'MX'],
'Language': ['en', 'es', 'en', 'fr', 'nl', 'fr', 'de', 'es']})
首先使用groupby
和unique()
查找每个国家/地区的唯一语言
你也可以试试这个
df = pd.DataFrame({'Country': ['US', 'US', 'CA', 'CA', 'BE', 'BE', 'BE', 'MX'],
'Language': ['en', 'es', 'en', 'fr', 'nl', 'fr', 'de', 'es']})
首先使用groupby
和unique()
查找每个国家/地区的唯一语言