Station ID Pollutants
8809 {"a": "46", "b": "3", "c": "12"}
8810 {"a": "36", "b": "5", "c": "8"}
8811 {"b": "2", "c": "7"}
8812 {"c": "11"}
8813 {"a": "82", "c": "15"}
Station ID a b c
8809 46 3 12
8810 36 5 8
8811 NaN 2 7
8812 NaN NaN 11
8813 82 NaN 15
我的主要问题是列表的长度不一样。但是所有列表只包含最多相同的3个值:'a'、'b'和'c'。它们总是以相同的顺序出现('a'第一,'b'第二,'c'第三)。
下面的代码用来工作并返回我想要的东西(df2)。
objs = [df, pandas.DataFrame(df['Pollutant Levels'].tolist()).iloc[:, :3]]
df2 = pandas.concat(objs, axis=1).drop('Pollutant Levels', axis=1)
print(df2)
我上周刚刚运行了这个代码,它运行得很好。但是现在我的代码坏了,我从第[4]行得到了这个错误:
IndexError: out-of-bounds on slice (end)
#My data format
u{'a': '1', 'b': '2', 'c': '3'}
#and not
{u'a': '1', u'b': '2', u'c': '3'}
数据以这种格式从PostgreSQL
数据库导入。对这个问题有什么帮助或想法吗?有办法转换Unicode吗?
要将字符串转换为实际的dict,可以执行df['污染物级别'].map(eval)
。之后,可以使用下面的解决方案将dict转换为不同的列。
通过一个小示例,您可以使用.apply(pd.series)
:
In [2]: df = pd.DataFrame({'a':[1,2,3], 'b':[{'c':1}, {'d':3}, {'c':5, 'd':6}]})
In [3]: df
Out[3]:
a b
0 1 {u'c': 1}
1 2 {u'd': 3}
2 3 {u'c': 5, u'd': 6}
In [4]: df['b'].apply(pd.Series)
Out[4]:
c d
0 1.0 NaN
1 NaN 3.0
2 5.0 6.0
要将其与dataframe的其余部分组合起来,可以concat
具有上述结果的其他列:
In [7]: pd.concat([df.drop(['b'], axis=1), df['b'].apply(pd.Series)], axis=1)
Out[7]:
a c d
0 1 1.0 NaN
1 2 NaN 3.0
2 3 5.0 6.0
In [15]: pd.concat([df.drop('b', axis=1), pd.DataFrame(df['b'].tolist())], axis=1)
Out[15]:
a c d
0 1 1.0 NaN
1 2 NaN 3.0
2 3 5.0 6.0
II有一个serie对象包含3列(名称,代码,值),我从下面的函数得到: 意甲看起来像这样 我可以用下面的代码将输出分配给我的数据帧。 我得到的数据框是这样的 如何将此列拆分为3列?
我的问题是如何将一列拆分为多个列。我不知道为什么 不起作用。 例如,我想将“df_test”更改为“df_test2”。我看到了很多使用熊猫模块的例子。还有别的办法吗?提前感谢您。 df_test2
我有一个数据帧: 如何拆分该列,使每个值都在自己的列中? 我找到的唯一答案是关于将一列拆分成两列。如何将一列拆分成两列?
我正在处理一个大的csv文件,下一列的最后一列有一个文本字符串,我想用一个特定的分隔符来分割。我想知道是否有一种简单的方法可以使用pandas或python来实现这一点? 我想按空格分割,然后按列中的冒号分割,但是每个单元格将导致不同数量的列。我有一个重新排列列的函数,所以列在工作表的末尾,但是我不确定从那里做什么。我可以在excel中使用内置的函数和一个快速宏来完成,但是我的数据集有太多的记录需
问题内容: 我将数据保存在postgreSQL数据库中。我正在使用Python2.7查询此数据并将其转换为Pandas DataFrame。但是,此数据框的最后一列中包含值的字典(或列表?)。DataFrame看起来像这样: 我需要将此列拆分为单独的列,以便DataFrame如下所示: 我遇到的主要问题是列表的长度不同。但是所有列表最多只能包含相同的3个值:a,b和c。而且它们始终以相同的顺序出现
问题内容: 我找到了一个解决方案,但确实很慢: 您有没有使用外部模块(numpy等)的任何想法? 问题答案: 由于字典很大,因此最好将所有涉及的项都保留为迭代器和生成器,像这样 样品运行: 输出量