Python 3.x - 使用 for 循环将数据附加到 Pandas 数据帧
Posted
技术标签:
【中文标题】Python 3.x - 使用 for 循环将数据附加到 Pandas 数据帧【英文标题】:Python 3.x - Append data to Pandas dataframe using for loop 【发布时间】:2016-10-13 15:07:28 【问题描述】:我有一个空的 pandas DataFrame:
aqi_df = pd.DataFrame(columns = ["IMEI","Date","pm10conc_24hrs","pm25conc_24hrs","sdPm10","sdPm25","aqi","windspeed","winddirection","severity","health_impact"] )
我想给每一列一个一个地添加元素 -
for i in range(1,10):
aqi_df.IMEI.append("a")
aqi_df.Date.append("b")
aqi_df.pm10conc_24hrs.append("c")
.
.
.
但是 append 会报错
TypeError: 无法连接非 NDFrame 对象
如何将元素一个一个地附加到 pandas 数据帧?
【问题讨论】:
错误很明显,您需要传递Series
或DataFrame
以进行追加,除了为什么在它表现不佳时这样做,因为您将在每次追加调用时迭代地增长df所以会很慢
【参考方案1】:
你可以使用的IIUC:
aqi_df = pd.DataFrame(columns = ["IMEI","Date","pm10conc_24hrs"] )
print (aqi_df)
for i in range(1,10):
aqi_df.loc[i] = ['a','b','c']
print (aqi_df)
IMEI Date pm10conc_24hrs
1 a b c
2 a b c
3 a b c
4 a b c
5 a b c
6 a b c
7 a b c
8 a b c
9 a b c
但更好的是创建DataFrame from Series or dict
:
IMEI = pd.Series(['aa','bb','cc'])
Date = pd.Series(['2016-01-03','2016-01-06','2016-01-08'])
pm10conc_24hrs = pd.Series(['w','e','h'])
aqi_df = pd.DataFrame('a':IMEI,'Date':Date,'pm10conc_24hrs':pm10conc_24hrs)
print (aqi_df)
Date a pm10conc_24hrs
0 2016-01-03 aa w
1 2016-01-06 bb e
2 2016-01-08 cc h
aqi_df = pd.DataFrame('a':['aa','bb','cc'],
'Date':['2016-01-03','2016-01-06','2016-01-08'],
'pm10conc_24hrs':['w','e','h'])
print (aqi_df)
Date a pm10conc_24hrs
0 2016-01-03 aa w
1 2016-01-06 bb e
2 2016-01-08 cc h
【讨论】:
感谢@jezrael 的建议以上是关于Python 3.x - 使用 for 循环将数据附加到 Pandas 数据帧的主要内容,如果未能解决你的问题,请参考以下文章
在python中使用for循环时出现JSONDecodeError [重复]