pandas 内的 np 重塑适用
np reshape within pandas apply
出现异常:数据必须是一维的。
我将用玩具示例来说明问题。
import pandas as pd
import numpy as np
初始数据帧:
df = pd.DataFrame({"A": [[10,15,12,14],[20,30,10,43]], "R":[2,2] ,"C":[2,2]})
>>df
A C R
0 [10, 15, 12, 14] 2 2
1 [20, 30, 10, 43] 2 2
转换为 numpy 数组并重塑:
df['A'] = df['A'].apply(lambda x: np.array(x))
df.apply(lambda x: print(x[0],(x[1],x[2])) ,axis=1)
df['A_reshaped'] = df.apply(lambda x[['A','R','C']]: np.reshape(x[0],(x[1],x[2])),axis=1)
df
A C R A_reshaped
0 [10, 15, 12, 14] 2 2 [[10,15],[12,14]]
1 [20, 30, 10, 43] 2 2 [[20,30],[10,43]]
有人知道原因吗?它似乎不接受 pandas 单元格中的二维数组,但这很奇怪...
在此先感谢您的帮助!!!
直接使用 apply
不起作用 - return 值是一个 numpy
二维数组,将其放回 DataFrame 会混淆 Pandas,对某些人来说原因。
不过这似乎可行:
df['reshaped'] = pd.Series([a.reshape((c, r)) for (a, c, r) in zip(df.A, df.C, df.R)])
>>> df
A C R reshaped
0 [10, 15, 12, 14] 2 2 [[10, 15], [12, 14]]
1 [20, 30, 10, 43] 2 2 [[20, 30], [10, 43]]
出现异常:数据必须是一维的。
我将用玩具示例来说明问题。
import pandas as pd
import numpy as np
初始数据帧:
df = pd.DataFrame({"A": [[10,15,12,14],[20,30,10,43]], "R":[2,2] ,"C":[2,2]})
>>df
A C R
0 [10, 15, 12, 14] 2 2
1 [20, 30, 10, 43] 2 2
转换为 numpy 数组并重塑:
df['A'] = df['A'].apply(lambda x: np.array(x))
df.apply(lambda x: print(x[0],(x[1],x[2])) ,axis=1)
df['A_reshaped'] = df.apply(lambda x[['A','R','C']]: np.reshape(x[0],(x[1],x[2])),axis=1)
df
A C R A_reshaped
0 [10, 15, 12, 14] 2 2 [[10,15],[12,14]]
1 [20, 30, 10, 43] 2 2 [[20,30],[10,43]]
有人知道原因吗?它似乎不接受 pandas 单元格中的二维数组,但这很奇怪...
在此先感谢您的帮助!!!
直接使用 apply
不起作用 - return 值是一个 numpy
二维数组,将其放回 DataFrame 会混淆 Pandas,对某些人来说原因。
不过这似乎可行:
df['reshaped'] = pd.Series([a.reshape((c, r)) for (a, c, r) in zip(df.A, df.C, df.R)])
>>> df
A C R reshaped
0 [10, 15, 12, 14] 2 2 [[10, 15], [12, 14]]
1 [20, 30, 10, 43] 2 2 [[20, 30], [10, 43]]