pandas 数据框到键值对

2024-06-28

将以下 pandas 数据帧转换为键值对的最佳方法是什么

Before :

datetime             name    qty     price
2017-11-01 10:20     apple    5       1
2017-11-01 11:20     pear     2       1.5
2017-11-01 13:20     banana   10      5

After :

2017-11-01 10:20 name=apple qty=5 price=1
2017-11-01 11:20 name=pear  qty=2 price=1.5
2017-11-01 13:20 name=banana qty=10 price=5

请注意,我不希望输出中包含日期时间键。


看来你需要to_dict http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_dict.html:

d = df.drop('datetime', axis=1).to_dict(orient='records')
print (d)
[{'qty': 5, 'price': 1.0, 'name': 'apple'}, 
 {'qty': 2, 'price': 1.5, 'name': 'pear'}, 
 {'qty': 10, 'price': 5.0, 'name': 'banana'}]

但如果不需要钥匙datetime:

d = df.set_index('datetime').to_dict(orient='index')
print (d)
{'2017-11-01 13:20': {'qty': 10, 'price': 5.0, 'name': 'banana'}, 
 '2017-11-01 10:20': {'qty': 5, 'price': 1.0, 'name': 'apple'}, 
 '2017-11-01 11:20': {'qty': 2, 'price': 1.5, 'name': 'pear'}}

如果顺序很重要:

tuples = [tup for tup in df.set_index('datetime').itertuples()]
print (tuples)

[Pandas(Index='2017-11-01 10:20', name='apple', qty=5, price=1.0), 
 Pandas(Index='2017-11-01 11:20', name='pear', qty=2, price=1.5), 
 Pandas(Index='2017-11-01 13:20', name='banana', qty=10, price=5.0)]

EDIT:

New DataFrame使用列名称创建并添加旧值。最后写入to_csv http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_csv.html:

df = df.set_index('datetime').astype(str)
df1 = pd.DataFrame(np.tile(np.array(df.columns), len(df.index)).reshape(len(df.index), -1), 
                   index=df.index, 
                   columns=df.columns) + '='
df1 = df1.add(df)
print (df1)
                         name     qty      price
datetime                                        
2017-11-01 10:20   name=apple   qty=5  price=1.0
2017-11-01 11:20    name=pear   qty=2  price=1.5
2017-11-01 13:20  name=banana  qty=10  price=5.0

df1.to_csv('filename.csv', header=None)

2017-11-01 10:20,name=apple,qty=5,price=1.0
2017-11-01 11:20,name=pear,qty=2,price=1.5
2017-11-01 13:20,name=banana,qty=10,price=5.0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pandas 数据框到键值对 的相关文章

随机推荐

  • 如何在两个 PyQt5 MainWindow 小部件之间切换

    我正在编写一个程序 它有两个不同的部分 让我们称它们为 sub1 和 sub2 当我最初运行程序时 会显示 sub1 并且我在后台加载 sub2 但不显示它 我在 sub1 中有一个菜单操作 允许您切换到 sub2 在 sub2 中有一个菜
  • 如何在 GTK3 下将文本域绑定到本地文件夹以用于 gettext

    With gettext您可以使用默认的系统范围区域设置目录 也可以使用以下命令自己指定一个bindtextdomain 当编译的 mo 翻译文件在系统的默认位置不可用时 直接从源代码运行程序时 这非常有用 在 Python 中你可以这样做
  • N 个指向函数的指针数组,返回函数指针

    这是面试时问我的 我真的很困惑 如何声明一个 N 数组 指向函数返回的指针 指向函数返回的指针 指向字符的指针 有人可以帮忙吗 Typedef 是为懦夫准备的 这里有一个简单 机械的方法来计算复杂的声明 a a a N is an N el
  • 文件的计算

    Day price1 price2 2 2 2000 10 15 3 2 2000 12 18 4 2 2000 14 19 对于每个值 价格 1 和价格 2 我想为每一列计算不同的 现在 过去 line2 line1 为了做到这一点 使用
  • numpy polyfit 通过 0

    假设我有x and y带有权重向量的向量wgt 我可以拟合三次曲线 y a x 3 b x 2 c x d 通过使用np polyfit如下 y fit np polyfit x y deg 3 w wgt 现在 假设我想做另一次拟合 但这
  • Mercurial:使用 hg pull --rebase 的问题的具体示例

    我正在努力寻找适合我们工作方式的多变工作流程 我目前倾向于对每个功能进行克隆 但这与 Subversion 的思维方式相比发生了很大的变化 我们还会遇到当前设置环境的费用问题 使用 hg pull rebase 似乎给我们提供了更多类似 S
  • pygtk关于设置按钮敏感属性的奇怪问题

    在我的一种方法中 我有以下代码 def fun self button1 set sensitive False self get time 然而 self button1只有在get time 返回后才变得不敏感 使用time sleep
  • jQuery Multiselect - 全选并带有过滤搜索

    当您使用search feature 然后使用select all它不能一起工作 它选择 所有内容 就好像搜索没有进行任何更改 但搜索本身 隐藏 元素 它应该只选择所有的项目visible 想知道其他人是否遇到过这个问题或知道解决方案 如果
  • 如何命名 HDF5 数据集中的列?

    我在h5py中制作了一个数据集 f h5py File experimentReadings hdf5 w dset f create dataset physics 5 4 dtype f 我有一个变量名称列表 namesList hei
  • Azure 表存储快照/备份功能

    我似乎找不到任何有关拍摄 Azure 表存储快照的文档 也找不到任何有关进行备份的文档 我发现几年前的一些帖子 人们说他们通过在 Windows 调度程序调用的 VM 上运行的 AzCopy 将表存储导出到另一个存储帐户 但这似乎非常过时
  • x = os.system(..) 的返回值[重复]

    这个问题在这里已经有答案了 当我打字时os system whoami 在Python中 作为root 它返回root 但是当我尝试将它分配给变量时x os system whoami 它将 x 的值设置为 0 为什么 os system
  • 有没有办法刷新 Oracle 中 PL/SQL 的输出?

    我有一个从 shell 脚本中调用的 SQL 脚本 需要很长时间才能运行 目前它包含dbms output put line不同点的声明 这些打印语句的输出会出现在日志文件中 但仅在脚本完成后才会出现 有什么方法可以确保脚本运行时输出出现在
  • 缩小位图字体的算法

    这是后续这个问题 https stackoverflow com questions 4179414 low level c display text pixel by pixel 我正在开发一个低级 C 应用程序 我必须在其中绘制文本 我
  • 如果我从 Sun JDK 切换到 OpenJDK,我需要准备哪些惊喜?

    如果我从 Sun JDK 切换到 OpenJDK 我需要为哪些意外做好准备 哪些地方经常出错 这有多困难 当然 每个应用程序都可能有其各自的问题 但我正在寻找classes很多人在切换 JDK 时已经遇到过很多问题 OpenJDK 不太可能
  • HDFS NFS 位置使用奇怪的数字用户名值作为目录权限

    在 NFS 安装的 HDFS 位置的文件夹权限中看到用户名的无意义值 而 HDFS 位置本身 使用 Hortonworks HDP 3 1 看起来很好 例如 ls lh nfs mount root user total 6 5K drwx
  • 特定于文化的日期时间字符串在平台之间不一致

    我有一个测试应用程序 允许用户从组合框中选择区域性 并在多行文本框中显示区域性特定日期 代码如下 public partial class Form1 Form public Form1 InitializeComponent comboB
  • AS3中如何知道一个对象是否是动态的

    在Action Script 3中 您可以编写一个定义动态对象的类 MovieClip和Object是两个例子 这个对象可以在运行时修改 我想知道是否有某种方法 当然是在运行时 知道某个对象是否是动态的 PS 没有做这样的事情 functi
  • 更改分配新变量的默认环境

    我经常想在全局环境下的一个环境中创建很多变量 这可以通过以下方式轻松完成envir论证sys source 如果由正在获取的文件创建的所有变量都应该进入单个环境 但我通常使用创建变量集的文件 一组应该进入一个环境 另一组应该进入另一个环境
  • pymc3 中均匀分布的区间变换是什么?

    我注意到 当在 pymc3 中使用均匀分布时 采样器也会扫描 interval参数也是如此 除非指定了转换 例如 with fitModel6 normMu pm Uniform normMu lower 0 upper 1000 不仅会导
  • pandas 数据框到键值对

    将以下 pandas 数据帧转换为键值对的最佳方法是什么 Before datetime name qty price 2017 11 01 10 20 apple 5 1 2017 11 01 11 20 pear 2 1 5 2017