【问题标题】:Extract (convert) variables and associated values from pandas data frame从 pandas 数据框中提取(转换)变量和相关值
【发布时间】:2020-12-01 05:54:28
【问题描述】:

我有一个熊猫数据框如下:

a = pd.DataFrame({'col1': ('x','y'), 'col2':(1,2)})

我想提取变量和相关的值,例如,

x=1
y=2

我该怎么做?

【问题讨论】:

  • 你好。您可以使用a.values.
  • a.values 或 a.to_numpy 无济于事,因为我想要创建两个变量 x 和 y 并分配它们的值。
  • 它将为您提供列表数组。您可以从中提取所有内容。

标签: python pandas


【解决方案1】:

您可以使用exec 来解析和执行以字符串形式编写的 Python 代码。

例如,exec('x=1') 将创建并实例化变量 x,您可以稍后在代码中使用该变量。

考虑到这一点,以下将起作用

s = ','.join(a['col1']) + '=' + ','.join(a['col2'].astype('str'))
exec(s)
print(x,y)

生产

1 2

这里s 以字符串'x,y=1,2' 的形式给出

如果值是字符串,则需要插入引号。基本上s 需要看起来像有效的 Python 代码。所以例如你可以做

a = pd.DataFrame({'col1': ('x','y'), 'col2':('red','green')})
s = ','.join(a['col1']) + '=' + ','.join(a['col2'].apply(lambda s:f'\'{s}\''))
exec(s)
print(x,y)

生产

red green

【讨论】:

  • 谢谢,当值是整数时,它几乎对我有用。当值是字符串时,比如“红色”和“绿色”,会有什么修改?
  • @anix-anirban 我在答案中添加了字符串示例
  • @anix-anirban 很高兴它有帮助!但不要过度使用exec,因为这通常被认为是不好的做法,请参阅here。您可以使用标准 dtaframe 方法访问df 中的这些值,因此也许值得多考虑一下您的设计。
猜你喜欢
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-18
  • 2017-10-01
  • 2022-01-03
  • 1970-01-01
相关资源
最近更新 更多