如何通过pandas将系列拆分为两列

2024-10-01 09:36:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有三个列表填充了数据,我想连接它们来创建一个数据帧

type of data_activationsLV : list
type of data_activationsF : list
type of data_activationsPC : list

三个列表的数据结构:

^{pr2}$

。。在

我把它们转换成系列,然后把它们组合起来:

df15LV = pd.Series(data_activationsLV)
df15F = pd.Series(data_activationsF)
df15PC = pd.Series(data_activationsPC)

dfnew2=pd.concat([df15LV,df15F,df15PC], ignore_index=True, axis=1)

这里我有一个问题,在每一列中,它都会考虑旧列的名称及其与值的索引

index    0              1                2
0        a14468  7.8    b14468   7.2     c14468   7.6
1        a14469  7.8    b14469   7.1     c14469   7.0
2        a14470  7.9    b14470   7.9     c14470   8.1
3        a14471  8.2    b14471   9.5     c14471   9.9

所以我测试了分割函数:

dfnew2['a'] = dfnew2[2].split(' ')

但它没有起作用,当我试图拆分这些列时,会发生以下情况:

AttributeError: 'Series' object has no attribute 'split'

是否可能只有每列的值:

index    df15LV     df15F      df15PC
0        7.8        7.2        7.6
1        7.8        7.1        7.0
2        7.9        7.9        8.1
3        8.2        9.5        9.9

Tags: of数据列表dataindextypelistseries
2条回答

如果列表长度相等,则可以创建一个空的数据帧并填充它:

data_activationsLV = [7.8,7.8,7.9,8.2]
data_activationsF = [7.2,7.1,7.9,9.5]
# create an empty dataframe
columns = ['LV', 'F']
index = np.arange(len(data_activationsLV)) # array of numbers for the number of rows
df = pd.DataFrame(columns=columns, index = index)
df['LV'] = data_activationsLV
df['F'] = data_activationsF
df

我认为您需要用^{}拆分apply,并用str[1]选择:

print (data_activationsLV)
['14468  7.8', '14469  7.8']

print (data_activationsF)
['14468  7.2', '14469  7.1', '14470  7.9', '14471  9.5']

print (data_activationsPC)
['14468  7.6', '14470  8.1', '14471  9.9']

df15LV = pd.Series(data_activationsLV)
df15F = pd.Series(data_activationsF)
df15PC = pd.Series(data_activationsPC)

dfnew2=pd.concat([df15LV,df15F,df15PC], axis=1)
dfnew2 = dfnew2.apply(lambda x: x.str.split().str[1])
#if necessary convert to float
dfnew2 = dfnew2.astype(float)
print (dfnew2)
     0    1    2
0  7.8  7.2  7.6
1  7.8  7.1  8.1
2  NaN  7.9  9.9
3  NaN  9.5  NaN

另一种解决方案是使用list comprehension进行拆分:

^{2}$

相关问题 更多 >