简体   繁体   English

如何将带有值列表的列转换为 Pandas DataFrame 中的行,也包括前一列

[英]How to convert column with list of values into rows in Pandas DataFrame including previous column also

Hi I have a dataframe like this:嗨,我有一个这样的数据框:

    A             B 
0:  a           [[L1, L2]]
1:  b           [[L1, L2, L3]]

I want to change it into:我想把它改成:

    A     B                 C 
0:  a    [[L1, L2]]         L1
1:  a    [[L1, L2]]         L2
2:  b    [[L1, L2, L3]]     L1
3:  b    [[L1, L2, L3]]     L2
4:  b    [[L1, L2, L3]]     L3

How can I do that?我怎样才能做到这一点?

try some like this :试试这样的:

import pandas as pd
from io import StringIO
data = """
A B
a [[L1,L2]]
b [[L1,L2,L3]]
"""
df = pd.read_csv(StringIO(data),sep=' ')
df['C']=df['B']
df['C']=df.C.astype(str).replace(['\[','\]', "'", "\s+"], '', regex=True)
print(df.set_index(df.columns.drop('C',1).tolist()).C.str.split(',', expand=True).stack().reset_index().rename(columns={0:'C'}).loc[:, df.columns])

result :结果 :

   A             B   C
0  a     [[L1,L2]]  L1
1  a     [[L1,L2]]  L2
2  b  [[L1,L2,L3]]  L1
3  b  [[L1,L2,L3]]  L2
4  b  [[L1,L2,L3]]  L3

One solution using itertools.chain :使用itertools.chain一种解决方案:

import pandas as pd
from itertools import chain

# old dataframe:
df = pd.DataFrame({'A': ['a', 'b'],
                   'B': [  [['L1', 'L2']], [['L1', 'L2', 'L3']]   ]})

d = {'A':[], 'B':[], 'C': []}
for a, b in zip(df['A'], df['B']):
    for c in chain.from_iterable(b):
        d['A'].append(a)
        d['B'].append(b)
        d['C'].append(c)

# new dataframe:     
df = pd.DataFrame(d)
print(df)

Prints:印刷:

   A               B   C
0  a      [[L1, L2]]  L1
1  a      [[L1, L2]]  L2
2  b  [[L1, L2, L3]]  L1
3  b  [[L1, L2, L3]]  L2
4  b  [[L1, L2, L3]]  L3

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何将带有值列表的列转换为 Pandas DataFrame 中的行 - How to convert column with list of values into rows in Pandas DataFrame pandas dataframe 按作为列表的列的值过滤行 - pandas dataframe filter rows by values of column that is a list 如果值列表出现在pandas dataframe的任何列中,如何打印行 - How to print rows if a list of values appear in any column of pandas dataframe 将行转换为 pandas 中列下的值列表 - Convert Rows into List of values under a column in pandas 将具有单个值列表的pandas列转换为行 - Convert pandas column with single list of values into rows 考虑到前一行的值,将函数应用于pandas数据框列 - Apply a function to a pandas dataframe column, considering values of previous rows Determining Values in Pandas Dataframe 基于另一列中的前几行值 - Determining Values in Pandas Dataframe Based on Previous Rows Value in Another Column 在Pandas数据框中将列转换为行 - Convert column into rows in Pandas dataframe 如何使用日期时间 ohlcv 有效地将数组转换为 pandas dataframe,还将列值除以 100? - How to convert Array to pandas dataframe with datetime ohlcv efficiently, also divide column values by 100? 给定 pandas DataFrame 中一列中的值列表,如何从同一行中的另一列中获取 output 中的值? - Given a list of values in a column in pandas DataFrame, how to output values from another column in the same rows?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM