【问题标题】:How to split elements listed in one cell into separate cells in Pandas?如何将一个单元格中列出的元素拆分为 Pandas 中的单独单元格?
【发布时间】: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

提前致谢!

    标签: python pandas


    【解决方案1】:

    你可以这样试试。我还没有测试,但它应该工作

    df =df.assign(LanguageWorkedWith=df['LanguageWorkedWith'].str.split(',')).explode('LanguageWorkedWith')
    

    如果它不起作用,请告诉我。

    【讨论】:

      猜你喜欢
      • 2016-09-15
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-30
      相关资源
      最近更新 更多