【发布时间】:2022-10-06 02:03:06
【问题描述】:
我能够解决下面描述的问题,但由于我是新手,我不确定我的解决方案是否好。对于如何以更有效和/或更优雅的方式进行操作的任何提示,我将不胜感激。
我有的:
...等等(桌子很大)。
我需要的:
我是如何解决的:
加载文件
df = pd.read_csv(\"survey_data_cleaned_ver2.csv\")
定义一个函数
def transform_df(df, list_2, column_2, list_1, column_1=\'Respondent\'):
for ind in df.index:
elements = df[column_2][ind].split(\';\')
num_of_elements = len(elements)
for num in range(num_of_elements):
list_1.append(df[\'Respondent\'][ind])
for el in elements:
list_2.append(el)
Dropna 因为 NaN 是浮点数,这导致了后来的错误。
df_LanguageWorkedWith = df[[\'Respondent\', \'LanguageWorkedWith\']]
df_LanguageWorkedWith.dropna(subset=\'LanguageWorkedWith\', inplace=True)
创建空列表
Respondent_As_List = []
LanguageWorkedWith_As_List = []
调用函数
transform_df(df_LanguageWorkedWith, LanguageWorkedWith_As_List, \'LanguageWorkedWith\', Respondent_As_List)
将列表转换为数据框
df_Respondent = pd.DataFrame(Respondent_As_List, columns=[\"Respondent\"])
df_LanguageWorked = pd.DataFrame(LanguageWorkedWith_As_List, columns=[\"LanguageWorkedWith\"])
连接这些数据框
df_LanguageWorkedWith_final = pd.concat([df_Respondent, df_LanguageWorked], axis=1)
就是这样。
代码和输入文件可以在我的 GitHub 上找到:https://github.com/jarsonX/Temp_files
提前致谢!