在熊猫的列中存储字符串值数组? [复制]

Posted

技术标签:

【中文标题】在熊猫的列中存储字符串值数组? [复制]【英文标题】:Store array of string values in column in pandas? [duplicate] 【发布时间】:2017-01-24 01:16:50 【问题描述】:

我有一个熊猫数据框。我有一列可能包含空值或字符串值数组。但我无法确定如何在此列中存储值。

这是我现在的代码:

df_completed = df[df.completed]
df['links'] = None
for i, row in df_completed.iterrows():
    results = get_links(row['nct_id'])
    if results:
        df[df.nct_id == row['nct_id']].links = results
        print df[df.nct_id == row['nct_id']].links

但这有两个问题:

results是一个长度为1的数组时,打印的输出是None,而不是数组,所以我想我一定是把值保存错了 当results 是一个较长的数组时,我保存值的行会产生错误:ValueError: Length of values does not match length of index

我做错了什么?

【问题讨论】:

【参考方案1】:

我不确定尝试像这样在 pandas 中存储数组是否可取,您是否考虑过尝试序列化数组内容然后存储?

如果存储数组是您所追求的,那么您可以尝试使用set_value() 方法,如下所示(确保您注意nct_id 列的dtype):

In [35]: df = pd.DataFrame(data=np.random.rand(5,5), columns=list('ABCDE'))

In [36]: df
Out[36]: 
          A         B         C         D         E
0  0.741268  0.482689  0.742200  0.210650  0.351758
1  0.798070  0.929576  0.522227  0.280713  0.168999
2  0.413417  0.481230  0.304180  0.894934  0.327243
3  0.797061  0.561387  0.247033  0.330608  0.294618
4  0.494038  0.065731  0.538588  0.095435  0.397751

In [38]: df.dtypes
Out[38]: 
A    float64
B    float64
C    float64
D    float64
E    float64
dtype: object

In [39]: df.A = df.A.astype(object)

In [40]: df.dtypes
Out[40]: 
A     object
B    float64
C    float64
D    float64
E    float64
dtype: object

In [41]: df.set_value(0, 'A', ['some','values','here'])
Out[41]: 
                      A         B         C         D         E
0  [some, values, here]  0.482689  0.742200  0.210650  0.351758
1               0.79807  0.929576  0.522227  0.280713  0.168999
2              0.413417  0.481230  0.304180  0.894934  0.327243
3              0.797061  0.561387  0.247033  0.330608  0.294618
4              0.494038  0.065731  0.538588  0.095435  0.397751

我希望这会有所帮助!

【讨论】:

以上是关于在熊猫的列中存储字符串值数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL-命令用于具有相同id的列中的复制值

如何在熊猫中显示类似空字符串的列值的计数

从遵循特定模式的列中提取字符串

如何从包含特定列中特定字符串的熊猫数据框中删除行? [复制]

如何使用熊猫对与给定条件匹配的列中的值求和?

熊猫数据框:在固定其他列的列中提取具有特定标准/条件最小值的数据[重复]