Steam游戏数据处理:将DataFrame语言zip列转为Top10语言标识列
解决方案
假设你的DataFrame名为df,可以通过以下步骤实现需求:
步骤1:提取Top10语言列表
先从任意一行的"Both languages"列中提取Top10语言列表(假设所有行的Top10列表一致):
top10_langs = df['Both languages'].iloc[0][1]
步骤2:定义处理函数
编写一个函数,接收每行的元组数据,返回对应Top10语言的0/1标记:
import pandas as pd def mark_language_presence(lang_tuple): steam_langs = set(lang_tuple[0]) return pd.Series([1 if lang in steam_langs else 0 for lang in top10_langs], index=top10_langs)
步骤3:生成新列并合并到原DataFrame
将函数应用到"Both languages"列,生成包含所有Top10语言列的DataFrame,再与原DataFrame合并:
lang_columns = df['Both languages'].apply(mark_language_presence) df = pd.concat([df, lang_columns], axis=1)
步骤4:(可选)删除原列
如果不需要保留"Both languages"列,可以删除:
df.drop('Both languages', axis=1, inplace=True)
示例验证
针对你提供的示例行数据:
sample_tuple = (['English', 'French', 'Italian', 'German', 'Spanish - Spain', 'Japanese', 'Portuguese - Brazil', 'Russian', 'Simplified Chinese', 'Traditional Chinese'], ['English', 'Simplified Chinese', 'Russian', 'Spanish - Spain', 'Portuguese - Brazil', 'German', 'Japanese', 'French', 'Polish', 'Korean'])
应用函数后会生成如下列值:
| English | Simplified Chinese | Russian | Spanish - Spain | Portuguese - Brazil | German | Japanese | French | Polish | Korean |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 |
内容的提问来源于stack exchange,提问作者Pablo
相关产品推荐
相关产品推荐

