相关疑难解决方法(0)

Pandas DataFrame存储列表为字符串:如何转换回列表?

我有一个n- by- m的 Pandas DataFrame df定义如下.(我知道这不是最好的方法.对于我在实际代码中尝试做的事情是有意义的,但这个帖子的TMI就是这样,所以请理解我的方法,这种方法适用于我的特定场景.)

>>> df = DataFrame(columns=['col1'])
>>> df.append(Series([None]), ignore_index=True)
>>> df
Empty DataFrame
Columns: [col1]
Index: []
Run Code Online (Sandbox Code Playgroud)

我将列表存储在此DataFrame的单元格中,如下所示.

>>> df['column1'][0] = [1.23, 2.34]
>>> df
     col1
0  [1, 2]
Run Code Online (Sandbox Code Playgroud)

出于某种原因,DataFrame将此列表存储为字符串而不是列表.

>>> df['column1'][0]
'[1.23, 2.34]'
Run Code Online (Sandbox Code Playgroud)

我有两个问题要问你.

  1. 为什么DataFrame将列表存储为字符串,是否有解决此问题的方法?
  2. 如果没有,那么是否有一种Pythonic方法将此字符串转换为列表?

更新

我使用的DataFrame已经保存并从CSV格式加载.这种格式而不是DataFrame本身将列表从字符串转换为文字.

python string list dataframe pandas

41
推荐指数
4
解决办法
3万
查看次数

在seaborn中并排绘制两列的箱线图

我想将熊猫数据框的两列绘制为按类别并排的箱形图。这与此处提出的问题不同:Grouped boxplot with seaborn,其中两列内部有列表。那里的解决方案对我不起作用。

移动电源

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(
[
[2, 4, "A"],
[4, 5, "C"],
[5, 4, "B"],
[10, 4.2, "A"],
[9, 3, "B"],
[3, 3, "C"]
], columns=['data1', 'data2', 'Categories'])

#Plotting by seaborn
fig, axs = plt.subplots(1, 1)
sns.boxplot(data=df,x="Categories",y='data1',ax=axs)
fig.show()
plt.waitforbuttonpress()
plt.close(fig)
Run Code Online (Sandbox Code Playgroud)

上面的代码生成: 在此处输入图片说明

用箱线图中的“data2”替换“data1”将给出: 在此处输入图片说明

我想要的是这样的: 在此处输入图片说明

python seaborn

3
推荐指数
1
解决办法
5765
查看次数

标签 统计

python ×2

dataframe ×1

list ×1

pandas ×1

seaborn ×1

string ×1