我在数据框中有一列(称为'data'),看起来像这样,每一行都有一个字典列表,从2022-01-04开始,今天结束,例如第一行是{'value': 18.76, 'date': '2022-01-04'}, {'value': 18.59, 'date': '2022-01-05'}, {'value': 18.99, 'date': '2022-01-06'}…
0 [{'value': 18.76, 'date': '2022-01-04'}, {'val...
1 [{'value': 38.58, 'date': '2022-01-04'}, {'val...
2 [{'value': 37.5, 'date': '2022-01-04'}, {'valu...
3 [{'value': 61.77, 'date': '2022-01-04'}, {'val...
4 [{'value': 110.54, 'date': '2022-01-04'}, {'va...
5 [{'value': 101.71, 'date': '2022-01-04'}, {'va...
6 [{'value': 86.45, 'date': '2022-01-04'}, {'val...
7 [{'value': 97.95, 'date': '2022-01-04'}, {'val...
8 [{'value': 38.39, 'date': '2022-01-04'}, {'val...
9 [{'value': 217.92, 'date': '2022-01-04'}, {'va...
10 [{'value': 86.94, 'date': '2022-01-04'}, {'val...
11 [{'value': 55.2, 'date': '2022-01-04'}, {'valu...
12 [{'value': 138.97, 'date': '2022-01-04'}, {'va...
13 [{'value': 4853125.0, 'date': '2022-01-04'}, {...
14 [{'value': 29.12, 'date': '2022-01-04'}, {'val...
15 [{'value': 90.77, 'date': '2022-01-04'}, {'val...
16 [{'value': 87.15, 'date': '2022-01-04'}, {'val...
我使用了在
之前工作的一行代码df[['date','value']] = df['data'].apply(lambda x: [[i['date'],i['value']] for i in x]).explode().apply(pd.Series, index=['date','value'])
但是现在这行失败了,给出
ValueError: cannot reindex on an axis with duplicate labels
这个问题有简单的解决方法吗?由于有300个日期,因此每行有300个数据点,我不确定哪些日期可能包含重复数据??
您可以尝试:
df = df.explode("Column1")
df = pd.concat([df, df.pop("Column1").apply(pd.Series)], axis=1)
print(df)
打印:
value date
0 18.76 2022-01-04
0 18.59 2022-01-05
0 18.99 2022-01-06
1 38.58 2022-01-04
2 37.50 2022-01-04
...and so on.