【问题标题】:Convert the str to list of tuple将 str 转换为元组列表
【发布时间】:2022-06-22 23:26:34
【问题描述】:

我将列表 1 中 AB 化合物中 A 和 B 的氧化态称为('CaFe'、'BaSi'、'SeOs'、'BaGeO'、'CdCe'):

dfA = pd.read_csv("oxi_state.csv",index_col=0, header =0)
A1 = []
A2 = []
final = []
for i in range(len(list1)):
   A1 = dfA['OS'][list1[i][0]]
   A2 = dfA['OS'][list1[i][1]]
   A = (A1, A2)
   final.append(A)
final

当我从 DataFrame 调用数据时。数据格式为:

[('2', '2,3,4'),
 ('2', '4'),
 ('-2,4,6', '4,5,6,7'),
 ('2', '2,4'),
 ('2', '3,4')]

现在我想转换成如下形式:

[([2], [2, 3, 4]),  ([2], [4]),  ([-2,4,6], [4,5,6,7]),  ([2], [2,4]),  ([2], [3,4])]

用于后期处理。

提前致谢

【问题讨论】:

  • 你能显示 CSV 的摘录吗
  • Atom OS Ba 2 Ca 2 Cd 2 Ce 3,4 Ag 1,2,3 Am 3,4 可以吗,还是我需要共享 csv 文件。 @Albert Winestein
  • 该示例在您的问题上下文中毫无意义。如果这是 CSV 文件中的第一行,则 dfA['OS'] 将导致 KeyError。

标签: python dataframe


【解决方案1】:

您可能需要遍历所有项目。使用

list('2,3,4')

会回来

['2',',','3',',','4']

然后您可以检查并删除逗号并将 str 转换为 int

【讨论】:

  • 你能提供一个代码吗?我对python有点新。
【解决方案2】:

使用以, 作为分隔符的拆分方法。

   A1 = list(int(x) for x in dfA['OS'][list1[i][0]].split(","))
   A2 = list(int(x) for x in dfA['OS'][list1[i][1]].split(","))

【讨论】:

  • 它以这种形式给出(['2'],['2','3','4'])。但是想要的就像([2], [2, 3, 4])。仍然不符合要求.. @gowtham758550
  • @NeeleshGupta 我已经更新了我的答案
【解决方案3】:

这里是蛮力解决方案:

a = [('2', '2,3,4'),
 ('2', '4'),
 ('-2,4,6', '4,5,6,7'),
 ('2', '2,4'),
 ('2', '3,4')]

fin = []
for i in range(len(a)):
  tup = []
  for j in a[i]:
    tmp = []
    for v in j.split(','):
      tmp.append(int(v))
    tup.append(tmp)
  fin.append(tuple(tup))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-13
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 2018-07-20
    • 2017-06-20
    相关资源
    最近更新 更多