python - 遍历两个 pandas 列表
问题描述
我正在清理我的一些代码以使其更具pythonic,但我想知道是否可以使用诸如 itertools 或 pandas 方法之类的更好的方式编写以下代码。下面的代码有效,但是出于性能原因,我希望删除双 for 循环并合并一些代码。
最终,我正在处理一个调用 Pandas 列的索引列表。
def foo(dataset):
api_reshaped = pd.DataFrame(columns=['foo', 'bar'])
k = 0
for index, _ in dataset.iterrows():
for key in dataset.iloc[index][0][0]:
api_reshaped.loc[k, 'foo'] = key
api_reshaped.loc[k, 'bar'] = dataset.iloc[index][0][0][key]
k += 1
return api_reshaped
以下是此函数的预期输入/输出:
foo_input = pd.dataframe({
'batch_data': [{'foo_query': [{'bar_query': 'data'}]}],
'query_spell': ['foo']
})
print foo_input(foo_input)
# expected_output = pd.dataframe({
# 'foo': 'foo_query',
# 'bar': [{'bar_query': 'data'}]
# })
非常感谢!
解决方案
您可以将列表推导与转置一起使用:
# your input data
foo_input = pd.DataFrame({
'batch_data': [{'foo_query': [{'bar_query': 'data'}]}],
'query_spell': ['foo']
})
# use list comprehension with transpose
df = pd.DataFrame([item for item in foo_input['batch_data']]).T.reset_index()
# rename your columns
df.columns = ['Foo', 'Bar']
Foo Bar
0 foo_query [{'bar_query': 'data'}]
applymap
如果你想删除列表并且只有一个字典,你可以使用lambda 函数
推荐阅读
- node.js - Nodejs https 函数需要等待 url json 响应并将其传递回调用 express 模块作为响应以在客户端打印
- python - numpy 数组索引技术如何为相同的输入代码提供不同的输出?
- java - 在运行 gradle eclipse 任务之前是否需要关闭 Eclipse?
- java - 动态地将 ArrayList 添加到另一个 ArrayList 是踩值
- python - 在带有 selenium 的 python 中,如何轮换 IP 地址?
- jquery - 根据子类或兄弟类获取父元素或上一个元素
- torchscript - 无法让 torch.jit.script 与 pytorch RNN 一起正常工作
- python - Github 创建数据库文件 discord.py
- python - (Tensorflow)TypeError:create_estimator_and_inputs()缺少1个必需的位置参数:'hparams'
- c# - Xamarin.Forms - 多次加载其中的图像时扩展框架