我有一个数据框'tsli'在pandas和我想分配ID到每一行。
df = pd.DataFrame()
for i, ts in enumerate(tsli.iterrows()):
data = [[x, i] for x in tsli[ts]]
df = df.append(data, ignore_index=True)
df.columns = ['value', 'id']
但我得到的Typeerror是:
TypeError:
'(0, 0 0.094578
1 0.663170
2 0.098690
3 0.479210
4 0.645950
...
9995 0.146930
9996 0.514230
9997 0.323500
9998 0.141310
9999 0.078390
Name: 0, Length: 10000, dtype:
float64)' is an invalid key
我不知道为什么会发生这种情况
任何资源或参考资料都将是有益的
谢谢你编辑1.我的tsli是这样的
我的tsli看起来是这样的(这是一个示例数据集,但会产生同样的错误,实际数据集相当大,不能在这里上传)。
2 4 6 7 9 0 65 23
4 67 78 34 58 24 64
78 80 64 64 12
75 12 43 78 67 34
13 35 75 23 68 23 32
56 32 67 32 78 24 87
而我想要的输出是:
value id
2 0
4 0
6 0
7 0
9 0
0 0
65 0
23 0
4 1
67 1
78 1
34 1
58 1
24 1
64 1
78 2
80 2
64 2
64 2
12 2
...以此类推
更新。
这应该能达到你想要的效果。
df = pd.DataFrame()
values = []
ids = []
for row in tsli.index:
for col in tsli.columns:
ids.append(row)
values.append(tsli.loc[row, col])
df.loc[:, 'value'] = values
df.loc[:, 'id'] = ids
也就是说,我不太确定你为什么要这么做。 本质上,你是将数据框架减少到两列,并保留原始行索引作为值ID。 是什么用例阻止你原封不动地使用原来的tsli数据框呢?
原文回答
你试图给每一行添加什么样的id?
你的代码是失败的,因为它看起来是在尝试使用整列的浮点数(看起来像是 ts
)作为键,而你的意思是使用列名。
你可以非常简单地添加你的 "id "列,像这样。
df.loc[:, 'id'] = [y for x in tsli.loc[:, 'values']
{fnTahomafs10bord0shad01cH00FFFF}Where y
可以是任何你想要的。替换 values
用任何你想遍历的列名。