首页 > 解决方案 > 如何将数据框中的 CSV 列转换为行

问题描述

我在语言列中有一个带有 CSV 的数据框

     Name Language
0       A French,Espanol
1       B Deutsch,English

我希望将上述数据框转换如下

    Name Language
0      A French
1      A Espanol
2      B Deutsch
3      B English

我尝试了以下代码但无法完成

df=df.join(df.pop('Language').str.extractall(',$')[0] .reset_index(level=1,drop=True) .rename('Language')) .reset_index(drop=True)

标签: pythonpython-3.x

解决方案


首先创建一个具有相同列的新数据框,然后拆分第二个值并将行附加到数据框。

import pandas as pd

csv_df  = pd.DataFrame([['1', '2,3'], ['2', '4,5']], columns=['Name', 'Language'])
df = pd.DataFrame(columns=['Name ', 'Language'])

for index, row in csv_df .iterrows():
    name = row['Name']
    s = row['Language']
    txt = s.split(',')
    for x in txt:
        df = df.append(pd.Series([name, x], index=df.columns), ignore_index=True)

print(df)

推荐阅读