python一行解多行

DataframeA
D    C    A    B
1    1    1    ['x', 'y']
2    2    2    ['z']

DataframeB
D    C    A    B
1    1    1    x
1    1    1    y
2    2    2    z

DataframeC
D    C    A    B
1    1    1    {'x':True, 'y':False}
1    2    1    {'A':True, 'B':True,'C':False}
2    2    2    {'z':true}

DataframeD
D    C    A    B
1    1    1    x
1    2    1    A
1    2    1    B
2    2    2    z

如何将DataframeA解析为DataframeB ,将DataframeC解析为DataframeD。原始数据有几个G

要将DataframeA解析为DataframeB,你需要使用Pandas库中的相关函数。下面是一种可能的实现方式:

import pandas as pd

# 假设DataframeA为原始数据

# 解析DataframeA为DataframeB
DataframeB = pd.DataFrame()
DataframeB['Column1'] = DataframeA['Column1'].str.rstrip(' G').astype(float) / 1000
DataframeB['Column2'] = DataframeA['Column2'].str.rstrip(' G').astype(float) / 1000
# 继续解析其他列...

# 输出DataframeB
print(DataframeB)

在这个示例中,假设DataframeA中有两列Column1和Column2,包含了原始数据。原始数据的单位是G(例如1.5 G)。

首先,我们创建一个空的DataframeB。然后使用str.rstrip(' G')函数去掉数据中的G,并使用astype(float)函数将数据转换为浮点型。为了将单位从G转换为原始单位(例如转换为千克),我们将每个值除以1000。你可以针对每个列进行相应的解析,并将解析后的值存储到DataframeB的相应列中。

同样的道理,你可以使用类似的方法将DataframeC解析为DataframeD。只需根据DataframeC中的列名和数据的形式,编写相应的解析代码即可。

拆分之后元素的顺序有要求吗?

  • 看下这篇博客,也许你就懂了,链接:python_数据结构基础:DataFrame数据框
  • 除此之外, 这篇博客: Python dataframe数据 按某一列的值拆分成多个小的dataframe数据中的 DataFrame类型的数据 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 1. 循环定义多个变量

         当定义变量的个数是n时,定义n个变量:

       

    注:

    eval()函数和exec()函数的区别:

    eval()函数只能计算单个表达式的值,而exec()函数可以动态运行代码段。

    eval()函数可以有返回值,而exec()函数返回值永远为None。 

    2. 按某一列的值将DataFrame类型的数据拆分成多个DataFrame类型的数据

    3. 批量调用多个DataFrame类型的数据

           由于评论中有问到“那么批量调用这些dataframe的时候dataframe的名称怎么写”,那么在原有的基础上,给出了如何批量调用这些dataframe。

    1)批量打印多个DataFrame类型的数据

    2)批量修改多个DataFrame类型数据中[0,0]位置的元素为“aa”

      注:此处用到了dataframe类型数据的复制,若有需要见https://mp.csdn.net/console/editor/html/107539572中的介绍。

     


import pandas as pd

data_A=[
    {
        'D':1,'C':1,'A':1,'B':['x','y']
    },
    {
        'D': 2, 'C': 2, 'A': 2, 'B': ['z'],
    }
]

df_A = pd.DataFrame(data_A)

df_B = df_A.explode('B')
print(df_B)

print('============================')
data_C=[
    {
        'D':1,'C':1,'A':1,'B':{'x':True,'y':False}
    },
    {
        'D': 1, 'C': 2, 'A': 1, 'B': {'A':True,'B':True,'C':False}
    },
    {
        'D': 2, 'C': 2, 'A': 2, 'B': {'z':True},
    }
]

def is_True(x):
    result = []
    for k,v in x.items():
        if v == True:
            result.append(k)
    return result

df_C = pd.DataFrame(data_C)
df_C['B'] = df_C['B'].apply( lambda x:is_True(x))
# print(df_C)

df_D = df_C.explode('B')
print(df_D)