我在python中搜索过这个问题,但找不到我正在寻找的内容。
假设我有以下示例:
date_list = [Mar 27 2015, Mar 26 2015, Mar 25 2015]
num_list_1 = [22, 35, 7]
num_list_2 = [15, 12, 2]
如何组合列表,以便最终结果如下:
combined_list = [Mar 27 2015, 22, 15
Mar 26 2015, 35, 12
Mar 25 2015, 7, 2]
一旦我在combined_list变量中有数据,我希望能够将它传递给for循环并迭代每一行并将其插入我的SQLite数据库(如果日期不存在)或更新现有记录发现日期。
我有单独的列表,我有数据库插入工作。我不确定的是合并列表的正确方法。我在寻找熊猫数据框吗?或其他什么?
任何能够指引我朝正确方向发展的指示都将不胜感激
答案 0 :(得分:4)
在三个列表中使用zip
(我已经更正了date_list' s格式,原始帖子没有使用正确的字符串):
>>> date_list = ["Mar 27 2015", "Mar 26 2015", "Mar 25 2015"]
>>> num_list_1 = [22, 35, 7]
>>> num_list_2 = [15, 12, 2]
>>> list(zip(date_list, num_list_1, num_list_2))
[('Mar 27 2015', 22, 15), ('Mar 26 2015', 35, 12), ('Mar 25 2015', 7, 2)]
作为一个单独的列表,使用简单的列表理解与zip:
>>> [item for items in zip(date_list, num_list_1, num_list_2) for item in items]
['Mar 27 2015', 22, 15, 'Mar 26 2015', 35, 12, 'Mar 25 2015', 7, 2]
注意:这个答案不依赖于熊猫,如果您正在寻找在熊猫中这样做的方法,请查看@ EdChum的答案。
答案 1 :(得分:1)
如果你想在数据帧中使用它,那么你可以用列表作为列值来构造一个dict:
In [10]:
date_list = ['Mar 27 2015', 'Mar 26 2015', 'Mar 25 2015']
num_list_1 = [22, 35, 7]
num_list_2 = [15, 12, 2]
df = pd.DataFrame({'Date':date_list, 'num1':num_list_1, 'num2':num_list_2})
In [11]:
df['Date'] = pd.to_datetime(df['Date'])
df
Out[11]:
Date num1 num2
0 2015-03-27 22 15
1 2015-03-26 35 12
2 2015-03-25 7 2
In [12]:
df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 3 entries, 0 to 2
Data columns (total 3 columns):
Date 3 non-null datetime64[ns]
num1 3 non-null int64
num2 3 non-null int64
dtypes: datetime64[ns](1), int64(2)
memory usage: 96.0 bytes