将从 Pandas 数据帧获得的字符串转换为每行单独的列表
Posted
技术标签:
【中文标题】将从 Pandas 数据帧获得的字符串转换为每行单独的列表【英文标题】:Converting a string obtained from a Pandas dataframe into individual lists per line 【发布时间】:2019-03-15 02:33:48 【问题描述】:test 是一个转换为字符串的 pandas 数据框。
strtest = (test.to_string())
print strtest
转换为字符串后,我有以下输出:
This is the first test file 98128612.12
This is the second test file 31236164.15
我正在尝试将字符串的每一行放入一个列表并打印出来,如下所示:
['This is the first test file','98128612.12']
['This is the second test file','31236164.15']
这是我尝试在列表中生成上述输出时的代码:
testlist = []
for row in strtest.iterrows():
index, data = row
testlist.append(data.tolist())
print testlist
但是当我运行它时,我遇到了这个错误我该如何解决这个问题:
for row in strtest.iterrows():
AttributeError: 'unicode' object has no attribute 'iterrows'
【问题讨论】:
【参考方案1】:我认为你需要:
testlist = test.values.tolist()
print (testlist)
[['This is the first test file', 98128612.12],
['This is the second test file', 31236164.15]]
您的代码可以使用,but not recommended,因为速度慢:
testlist = []
#change strtest to test DataFrame
for index, data in test.iterrows():
testlist.append(data.tolist())
print (testlist)
【讨论】:
我之前尝试过 testlist = test.values.tolist() 但是,我只得到浮点值。 “这是第一个测试文件”字符串根本没有打印出来。输出如下:[98128612.12,31236164.15] @SamT - 所以需要test.astype(str).values.tolist()
?
感谢您的帮助,但它似乎不起作用。您的第二个解决方案现在生成:AttributeError: 'Series' object has no attribute 'iterrows'
@SamT - 这是系列,你需要for index, data in test.reset_index().iterrows():
@SamT - 第一个解决方案testlist = test.reset_index().values.tolist()
以上是关于将从 Pandas 数据帧获得的字符串转换为每行单独的列表的主要内容,如果未能解决你的问题,请参考以下文章
将 pandas 数据帧转换为 json 对象 - pandas
如何删除单引号,并在转换为to_json后将括号添加到pandas数据框中?
将列表写入 pandas 数据帧到 csv,从 csv 读取数据帧并再次转换为列表而无需字符串