在熊猫的列中存储字符串值数组? [复制]
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
我希望这会有所帮助!
【讨论】:
以上是关于在熊猫的列中存储字符串值数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章