假设我有以下数据:
1:-1 2:-1 3:0.213213 ...
1:0.905906 2:-1 4:-1 ...
数据的格式为[index]:[value]
,并且要以每行代表一个数组的方式导入值。所以我期待像以下一样的2D数组:
array = ([[-1, -1, 0.213213, ...]
[0.905906, -1, NaN, -1, ...]
])
使用numpy.loadtxt
(如果可能的话),我该怎么做呢?我已经阅读了dtype
的文档,但我似乎无法导入密钥对应于数组索引及其对应值的数据。
答案 0 :(得分:0)
我使用了大熊猫的read_csv
,虽然np.loadtxt也很有用。
import pandas as pd
df = pd.read_csv('your_file', header=None, sep=' |:')
df_new = pd.DataFrame(index=df.index,
columns=range(np.max(df.iloc[:, -2]))) # create empty dataframe
# Iterate over rows and place values at correct position.
for index, row in df.iterrows():
idx = row[0::2].astype('int').values-1
vals = row[1::2].values
df_new.iloc[index, idx] = vals
df_new.values
返回:
array([[-1.0, -1.0, 0.213213, nan],
[0.905906, -1.0, nan, -1.0]], dtype=object)