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中的列名和数据的形式,编写相应的解析代码即可。
拆分之后元素的顺序有要求吗?
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)