我有数据框,并且有use Scheb\YahooFinanceApi\ApiClient;
use Scheb\YahooFinanceApi\ApiClientFactory;
use GuzzleHttp\Client;
// Create a new client from the factory
$client = ApiClientFactory::createApiClient();
// Returns an array of Scheb\YahooFinanceApi\Results\HistoricalData
$historicalData = $client->getHistoricalData("AAPL", ApiClient::INTERVAL_1_DAY, new \DateTime("-3 days"), new \DateTime("today"));
echo $historicalData[0]['date'];
?>
个值:
NaN
我有值[12,15,3]的列表,我需要填写这些列:
欲望输出
col1 col2 col3
234 NaN 1
NaN NaN 18
9 2 NaN
我可以用
做到col1 col2 col3
234 15 1
12 15 18
9 2 3
但是没有循环可以做任何事吗?
答案 0 :(得分:3)
构建那些词典,然后fillna
l1= [12, 15, 3]
df.fillna(dict(zip(df.columns,l1)))
Out[120]:
col1 col2 col3
0 234.0 15.0 1.0
1 12.0 15.0 18.0
2 9.0 2.0 3.0
答案 1 :(得分:3)
又一种方法:
df.fillna( pd.Series( [12, 15, 3], index=df.columns ) )
看起来你可能想要每列(?)的平均值,在这种情况下你可以这样做:
df.fillna( df.mean() ) # df.mean() returns a series
无论如何,这个答案和其他答案的关键只是给fillna一些带标签的输出。在这里,我使用了一个系列,而其他答案使用了词典。当然,这两种方法都很好,只取决于哪种方式更方便。
答案 2 :(得分:2)
您可以将列表转换为字典,并将fillna作为参数提供给字典:
df.fillna({'col1': 12,'col2': 15, 'col3':3}, inplace=True)