python-3.x - Pandas 追加返回具有 NaN 值的 DF
问题描述
我正在将列表中的数据附加到 pandas df。我的条目中不断出现 NaN。
根据我读过的内容,我想我可能不得不提及代码中每一列的数据类型。
dumps = [];features_df = pd.DataFrame()
for i in range (int(len(ids)/50)):
dumps = sp.audio_features(ids[i*50:50*(i+1)])
for i in range (len(dumps)):
print(list(dumps[0].values()))
features_df = features_df.append(list(dumps[0].values()), ignore_index = True)
预期结果,例如 -
[0.833, 0.539, 11, -7.399, 0, 0.178, 0.163, 2.1e-06, 0.101, 0.385, 99.947, 'audio_features', '6MWtB6iiXyIwun0YzU6DFP', 'spotify:track:6MWtDFP6'iiX https://api.spotify.com/v1/tracks/6MWtB6iiXyIwun0YzU6DFP ', ' https://api.spotify.com/v1/audio-analysis/6MWtB6iiXyIwun0YzU6DFP ', 149520, 4] 一行。
实际可舞性能量 ... duration_ms time_signature 0
NaN NaN ... NaN NaN
1 NaN NaN ... NaN NaN
2 NaN NaN ... NaN NaN
3 NaN NaN ...
4 南 南 ... 南 南
5 南 南 ... 南 南
对于所有行
解决方案
append()
紧密循环中的策略不是做到这一点的好方法。相反,您可以构造一个空的DataFrame
,然后使用它loc
来指定一个插入点。DataFrame
应该使用索引。
例如:
import pandas as pd
df = pd.DataFrame(data=[], columns=['n'])
for i in range(100):
df.loc[i] = i
print(df)
time python3 append_df.py
n
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
real 0m13.178s
user 0m12.287s
sys 0m0.617s
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.append.html
迭代地将行附加到 DataFrame 可能比单个连接的计算密集度更高。更好的解决方案是将这些行附加到列表中,然后将列表与原始 DataFrame 一次性连接起来。
推荐阅读
- java - 在类数组中查找特定变量
- pytest - 如何生成带有屏幕截图的 HTML 报告
- c++ - (C++) 有什么理由不使用打开的文件吗?
- python - 我试图在我的基于 pygame 的游戏中添加简单的碰撞,但它不起作用
- php - 在mysql中显示来自php的json
- wsdl - 在为 Acumatica 课程 I300 示例查找 entity/Default/18.200.001?wsdl 时添加服务参考错误
- asp.net-core - 在单个 WASM 托管项目中运行两个 blazor WASM 应用程序
- python - 如何在 LibreOffice Impress 中选择文本框并使用 Python 更改其字体大小?
- python - 如何从括号中取出一个值
- python - 使用 Python 浏览互联网